diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -2,6 +2,9 @@
 
 ## WIP
 
+## [3.16] - 2022-02-05
+- Bump API version to v1.3.204
+
 ## [3.15] - 2022-01-14
 - Bump API version to v1.2.203
 
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
 name: vulkan
-version: "3.15"
+version: "3.16"
 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.hs b/src/Vulkan.hs
--- a/src/Vulkan.hs
+++ b/src/Vulkan.hs
@@ -4,6 +4,7 @@
                , module Vulkan.Core10
                , module Vulkan.Core11
                , module Vulkan.Core12
+               , module Vulkan.Core13
                , module Vulkan.Extensions
                , module Vulkan.NamedType
                , module Vulkan.SPIRVRequirements
@@ -13,6 +14,7 @@
 import Vulkan.Core10
 import Vulkan.Core11
 import Vulkan.Core12
+import Vulkan.Core13
 import Vulkan.Extensions
 import Vulkan.NamedType
 import Vulkan.SPIRVRequirements
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
@@ -97,7 +97,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindShaderGroupIndirectCommandNV)
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (BindVertexBufferIndirectCommandNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (BlitImageInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BlitImageInfo2)
 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)
@@ -105,14 +105,14 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferCollectionPropertiesFUCHSIA)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (BufferConstraintsInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (BufferCopy)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (BufferCopy2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BufferCopy2)
 import {-# SOURCE #-} Vulkan.Core10.Buffer (BufferCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_buffer_device_address (BufferDeviceAddressCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferDeviceAddressInfo)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (BufferImageCopy)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (BufferImageCopy2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BufferImageCopy2)
 import {-# SOURCE #-} Vulkan.Core10.OtherTypes (BufferMemoryBarrier)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (BufferMemoryBarrier2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (BufferMemoryBarrier2)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (BufferMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (BufferOpaqueCaptureAddressCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.BufferView (BufferViewCreateInfo)
@@ -129,9 +129,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.CommandBuffer (CommandBufferInheritanceInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (CommandBufferSubmitInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (CommandBufferSubmitInfo)
 import {-# SOURCE #-} Vulkan.Core10.CommandPool (CommandPoolCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.ImageView (ComponentMapping)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (ComputePipelineCreateInfo)
@@ -140,12 +140,12 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_cooperative_matrix (CooperativeMatrixPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureToMemoryInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferInfo2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferToImageInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyBufferInfo2)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyBufferToImageInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_rotated_copy_commands (CopyCommandTransformInfoQCOM)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (CopyDescriptorSet)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageInfo2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageToBufferInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageInfo2)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageToBufferInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuFunctionCreateInfoNVX)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuLaunchInfoNVX)
@@ -163,11 +163,11 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationBufferCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationImageCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_dedicated_allocation (DedicatedAllocationMemoryAllocateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (DependencyInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorBufferInfo)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorImageInfo)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolSize)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetAllocateInfo)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorSetLayoutBinding)
@@ -178,7 +178,7 @@
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing (DescriptorSetVariableDescriptorCountLayoutSupport)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateEntry)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (DeviceBufferMemoryRequirementsKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceBufferMemoryRequirements)
 import {-# SOURCE #-} Vulkan.Core10.Device (DeviceCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (DeviceDeviceMemoryReportCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (DeviceDiagnosticsConfigCreateInfoNV)
@@ -191,13 +191,13 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupSubmitInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupSwapchainCreateInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (DeviceImageMemoryRequirementsKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceImageMemoryRequirements)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (DeviceMemoryOpaqueCaptureAddressInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_memory_overallocation_behavior (DeviceMemoryOverallocationCreateInfoAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (DeviceMemoryReportCallbackDataEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (DevicePrivateDataCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (DevicePrivateDataCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Device (DeviceQueueCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority (DeviceQueueGlobalPriorityCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (DeviceQueueInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_directfb_surface (DirectFBSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.OtherTypes (DispatchIndirectCommand)
@@ -252,7 +252,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_filter_cubic (FilterCubicImageViewImageFormatPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (FormatProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (FormatProperties2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_format_feature_flags2 (FormatProperties3KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2 (FormatProperties3)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (FragmentShadingRateAttachmentInfoKHR)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentImageInfo)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (FramebufferAttachmentsCreateInfo)
@@ -271,10 +271,10 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_headless_surface (HeadlessSurfaceCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_MVK_ios_surface (IOSSurfaceCreateInfoMVK)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageBlit)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ImageBlit2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageBlit2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_buffer_collection (ImageConstraintsInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageCopy)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ImageCopy2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageCopy2)
 import {-# SOURCE #-} Vulkan.Core10.Image (ImageCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierExplicitCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (ImageDrmFormatModifierListCreateInfoEXT)
@@ -284,12 +284,12 @@
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (ImageFormatProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (ImageFormatProperties2)
 import {-# SOURCE #-} Vulkan.Core10.OtherTypes (ImageMemoryBarrier)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (ImageMemoryBarrier2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (ImageMemoryBarrier2)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface (ImagePipeSurfaceCreateInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion (ImagePlaneMemoryRequirementsInfo)
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (ImageResolve)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ImageResolve2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageResolve2)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (ImageSparseMemoryRequirementsInfo2)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage (ImageStencilUsageCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (ImageSubresource)
@@ -326,7 +326,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (MemoryAllocateFlagsInfo)
 import {-# SOURCE #-} Vulkan.Core10.Memory (MemoryAllocateInfo)
 import {-# SOURCE #-} Vulkan.Core10.OtherTypes (MemoryBarrier)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (MemoryBarrier2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (MemoryBarrier2)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedAllocateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation (MemoryDedicatedRequirements)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_memory_fd (MemoryFdPropertiesKHR)
@@ -397,7 +397,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
@@ -423,28 +423,28 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRatePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority_query (PhysicalDeviceGlobalPriorityQueryFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (PhysicalDeviceGroupProperties)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceIDProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (PhysicalDeviceImageDrmFormatModifierInfoEXT)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceImageFormatInfo2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_filter_cubic (PhysicalDeviceImageViewImageFormatInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_view_min_lod (PhysicalDeviceImageViewMinLodFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeatures)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_invocation_mask (PhysicalDeviceInvocationMaskFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceLimits)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (PhysicalDeviceMaintenance4FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (PhysicalDeviceMaintenance4PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Properties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
@@ -461,7 +461,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pageable_device_local_memory (PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
@@ -469,7 +469,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (PhysicalDevicePrivateDataFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)
@@ -498,36 +498,36 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_core_properties2 (PhysicalDeviceShaderCoreProperties2AMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_core_properties (PhysicalDeviceShaderCorePropertiesAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeatures)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsPropertiesNV)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImagePropertiesNV)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceSparseImageFormatInfo2)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (PhysicalDeviceSparseProperties)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup (PhysicalDeviceSubgroupProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeatures)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingPropertiesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (PhysicalDeviceSynchronization2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentProperties)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_tooling_info (PhysicalDeviceToolPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_tooling_info (PhysicalDeviceToolProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)
@@ -539,11 +539,13 @@
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
+import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Features)
+import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Properties)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
 import {-# SOURCE #-} Vulkan.Core10.PipelineCache (PipelineCacheCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.OtherTypes (PipelineCacheHeaderVersionOne)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_blend_operation_advanced (PipelineColorBlendAdvancedStateCreateInfoEXT)
@@ -554,8 +556,8 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_framebuffer_mixed_samples (PipelineCoverageModulationStateCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedback)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineDepthStencilStateCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PipelineDiscardRectangleStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineDynamicStateCreateInfo)
@@ -577,11 +579,11 @@
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineRasterizationStateCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PipelineRenderingCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Pipeline (PipelineTessellationStateCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoEXT)
@@ -600,7 +602,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_incremental_present (PresentRegionsKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimeGOOGLE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_GOOGLE_display_timing (PresentTimesInfoGOOGLE)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (PrivateDataSlotCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PrivateDataSlotCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (ProtectedSubmitInfo)
 import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PushConstantRange)
 import {-# SOURCE #-} Vulkan.Core10.Query (QueryPoolCreateInfo)
@@ -608,7 +610,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_performance_query (QueryPoolPerformanceQueryCreateInfoINTEL)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (QueueFamilyCheckpointProperties2NV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority_query (QueueFamilyGlobalPriorityPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (QueueFamilyGlobalPriorityPropertiesKHR)
 import {-# SOURCE #-} Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (QueueFamilyProperties2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (RayTracingPipelineCreateInfoKHR)
@@ -628,11 +630,11 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_multiview (RenderPassMultiviewCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (RenderPassSampleLocationsBeginInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (RenderPassTransformBeginInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingAttachmentInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingAttachmentInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingFragmentDensityMapAttachmentInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingFragmentShadingRateAttachmentInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ResolveImageInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ResolveImageInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing_motion_blur (SRTDataNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
@@ -649,7 +651,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_external_semaphore_win32 (SemaphoreGetWin32HandleInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_FUCHSIA_external_semaphore (SemaphoreGetZirconHandleInfoFUCHSIA)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreSignalInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (SemaphoreSubmitInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (SemaphoreSubmitInfo)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreTypeCreateInfo)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (SemaphoreWaitInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (SetStateFlagsIndirectCommandNV)
@@ -676,7 +678,7 @@
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(..))
 import {-# SOURCE #-} Vulkan.Core10.Queue (SubmitInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (SubmitInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (SubmitInfo2)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo)
 import {-# SOURCE #-} Vulkan.Core10.Pass (SubpassDependency)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassDependency2)
@@ -724,7 +726,7 @@
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (WriteDescriptorSet)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (WriteDescriptorSetAccelerationStructureKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlock)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_hdr_metadata (XYColorEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xcb_surface (XcbSurfaceCreateInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_xlib_surface (XlibSurfaceCreateInfoKHR)
@@ -856,26 +858,26 @@
   Extends BufferCreateInfo BufferOpaqueCaptureAddressCreateInfo = ()
   Extends BufferCreateInfo BufferDeviceAddressCreateInfoEXT = ()
   Extends BufferCreateInfo BufferCollectionBufferCreateInfoFUCHSIA = ()
-  Extends BufferImageCopy2KHR CopyCommandTransformInfoQCOM = ()
+  Extends BufferImageCopy2 CopyCommandTransformInfoQCOM = ()
   Extends CommandBufferBeginInfo DeviceGroupCommandBufferBeginInfo = ()
   Extends CommandBufferInheritanceInfo CommandBufferInheritanceConditionalRenderingInfoEXT = ()
   Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderPassTransformInfoQCOM = ()
   Extends CommandBufferInheritanceInfo CommandBufferInheritanceViewportScissorInfoNV = ()
-  Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderingInfoKHR = ()
+  Extends CommandBufferInheritanceInfo CommandBufferInheritanceRenderingInfo = ()
   Extends CommandBufferInheritanceInfo AttachmentSampleCountInfoAMD = ()
   Extends CommandBufferInheritanceInfo MultiviewPerViewAttributesInfoNVX = ()
-  Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()
+  Extends ComputePipelineCreateInfo PipelineCreationFeedbackCreateInfo = ()
   Extends ComputePipelineCreateInfo SubpassShadingPipelineCreateInfoHUAWEI = ()
   Extends ComputePipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
-  Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfoEXT = ()
+  Extends DescriptorPoolCreateInfo DescriptorPoolInlineUniformBlockCreateInfo = ()
   Extends DescriptorPoolCreateInfo MutableDescriptorTypeCreateInfoVALVE = ()
   Extends DescriptorSetAllocateInfo DescriptorSetVariableDescriptorCountAllocateInfo = ()
   Extends DescriptorSetLayoutCreateInfo DescriptorSetLayoutBindingFlagsCreateInfo = ()
   Extends DescriptorSetLayoutCreateInfo MutableDescriptorTypeCreateInfoVALVE = ()
   Extends DescriptorSetLayoutSupport DescriptorSetVariableDescriptorCountLayoutSupport = ()
   Extends DeviceCreateInfo PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()
-  Extends DeviceCreateInfo DevicePrivateDataCreateInfoEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePrivateDataFeaturesEXT = ()
+  Extends DeviceCreateInfo DevicePrivateDataCreateInfo = ()
+  Extends DeviceCreateInfo PhysicalDevicePrivateDataFeatures = ()
   Extends DeviceCreateInfo (PhysicalDeviceFeatures2 '[]) = ()
   Extends DeviceCreateInfo PhysicalDeviceVariablePointersFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceMultiviewFeatures = ()
@@ -888,12 +890,12 @@
   Extends DeviceCreateInfo PhysicalDeviceProtectedMemoryFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceMultiDrawFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceInlineUniformBlockFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceMaintenance4FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceInlineUniformBlockFeatures = ()
+  Extends DeviceCreateInfo PhysicalDeviceMaintenance4Features = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderDrawParametersFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderFloat16Int8Features = ()
   Extends DeviceCreateInfo PhysicalDeviceHostQueryResetFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceGlobalPriorityQueryFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceGlobalPriorityQueryFeaturesKHR = ()
   Extends DeviceCreateInfo PhysicalDeviceDeviceMemoryReportFeaturesEXT = ()
   Extends DeviceCreateInfo DeviceDeviceMemoryReportCreateInfoEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceDescriptorIndexingFeatures = ()
@@ -932,7 +934,7 @@
   Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceImagelessFramebufferFeatures = ()
-  Extends DeviceCreateInfo PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceTextureCompressionASTCHDRFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceCooperativeMatrixFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDevicePerformanceQueryFeaturesKHR = ()
@@ -945,13 +947,14 @@
   Extends DeviceCreateInfo PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()
   Extends DeviceCreateInfo PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderDemoteToHelperInvocationFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSubgroupSizeControlFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceSubgroupSizeControlFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceLineRasterizationFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDevicePipelineCreationCacheControlFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDevicePipelineCreationCacheControlFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceVulkan11Features = ()
   Extends DeviceCreateInfo PhysicalDeviceVulkan12Features = ()
+  Extends DeviceCreateInfo PhysicalDeviceVulkan13Features = ()
   Extends DeviceCreateInfo PhysicalDeviceCoherentMemoryFeaturesAMD = ()
   Extends DeviceCreateInfo PhysicalDeviceCustomBorderColorFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceBorderColorSwizzleFeaturesEXT = ()
@@ -959,52 +962,52 @@
   Extends DeviceCreateInfo PhysicalDeviceExtendedDynamicState2FeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
   Extends DeviceCreateInfo DeviceDiagnosticsConfigCreateInfoNV = ()
-  Extends DeviceCreateInfo PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = ()
   Extends DeviceCreateInfo PhysicalDeviceRobustness2FeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceImageRobustnessFeaturesEXT = ()
+  Extends DeviceCreateInfo PhysicalDeviceImageRobustnessFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = ()
   Extends DeviceCreateInfo PhysicalDevicePortabilitySubsetFeaturesKHR = ()
   Extends DeviceCreateInfo PhysicalDevice4444FormatsFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()
   Extends DeviceCreateInfo PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateFeaturesKHR = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderTerminateInvocationFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderTerminateInvocationFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = ()
   Extends DeviceCreateInfo PhysicalDeviceDepthClipControlFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceColorWriteEnableFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceSynchronization2FeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceSynchronization2Features = ()
   Extends DeviceCreateInfo PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceProvokingVertexFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceShaderIntegerDotProductFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceShaderIntegerDotProductFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
   Extends DeviceCreateInfo PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()
-  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingFeaturesKHR = ()
+  Extends DeviceCreateInfo PhysicalDeviceDynamicRenderingFeatures = ()
   Extends DeviceCreateInfo PhysicalDeviceImageViewMinLodFeaturesEXT = ()
   Extends DeviceCreateInfo PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = ()
   Extends DeviceCreateInfo PhysicalDeviceLinearColorAttachmentFeaturesNV = ()
-  Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoEXT = ()
+  Extends DeviceQueueCreateInfo DeviceQueueGlobalPriorityCreateInfoKHR = ()
   Extends FenceCreateInfo ExportFenceCreateInfo = ()
   Extends FenceCreateInfo ExportFenceWin32HandleInfoKHR = ()
   Extends FormatProperties2 DrmFormatModifierPropertiesListEXT = ()
-  Extends FormatProperties2 FormatProperties3KHR = ()
+  Extends FormatProperties2 FormatProperties3 = ()
   Extends FormatProperties2 DrmFormatModifierPropertiesList2EXT = ()
   Extends FramebufferCreateInfo FramebufferAttachmentsCreateInfo = ()
   Extends GraphicsPipelineCreateInfo GraphicsPipelineShaderGroupsCreateInfoNV = ()
   Extends GraphicsPipelineCreateInfo PipelineDiscardRectangleStateCreateInfoEXT = ()
   Extends GraphicsPipelineCreateInfo PipelineRepresentativeFragmentTestStateCreateInfoNV = ()
-  Extends GraphicsPipelineCreateInfo PipelineCreationFeedbackCreateInfoEXT = ()
+  Extends GraphicsPipelineCreateInfo PipelineCreationFeedbackCreateInfo = ()
   Extends GraphicsPipelineCreateInfo PipelineCompilerControlCreateInfoAMD = ()
   Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateStateCreateInfoKHR = ()
   Extends GraphicsPipelineCreateInfo PipelineFragmentShadingRateEnumStateCreateInfoNV = ()
-  Extends GraphicsPipelineCreateInfo PipelineRenderingCreateInfoKHR = ()
+  Extends GraphicsPipelineCreateInfo PipelineRenderingCreateInfo = ()
   Extends GraphicsPipelineCreateInfo AttachmentSampleCountInfoAMD = ()
   Extends GraphicsPipelineCreateInfo MultiviewPerViewAttributesInfoNVX = ()
-  Extends ImageBlit2KHR CopyCommandTransformInfoQCOM = ()
+  Extends ImageBlit2 CopyCommandTransformInfoQCOM = ()
   Extends ImageCreateInfo DedicatedAllocationImageCreateInfoNV = ()
   Extends ImageCreateInfo ExternalMemoryImageCreateInfoNV = ()
   Extends ImageCreateInfo ExternalMemoryImageCreateInfo = ()
@@ -1021,7 +1024,7 @@
   Extends ImageFormatProperties2 AndroidHardwareBufferUsageANDROID = ()
   Extends ImageFormatProperties2 FilterCubicImageViewImageFormatPropertiesEXT = ()
   Extends ImageMemoryBarrier SampleLocationsInfoEXT = ()
-  Extends ImageMemoryBarrier2KHR SampleLocationsInfoEXT = ()
+  Extends ImageMemoryBarrier2 SampleLocationsInfoEXT = ()
   Extends ImageMemoryRequirementsInfo2 ImagePlaneMemoryRequirementsInfo = ()
   Extends ImageViewCreateInfo ImageViewUsageCreateInfo = ()
   Extends ImageViewCreateInfo SamplerYcbcrConversionInfo = ()
@@ -1050,7 +1053,7 @@
   Extends MemoryRequirements2 MemoryDedicatedRequirements = ()
   Extends PhysicalDeviceExternalSemaphoreInfo SemaphoreTypeCreateInfo = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePrivateDataFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePrivateDataFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceVariablePointersFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiviewFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDevicePresentIdFeaturesKHR = ()
@@ -1061,12 +1064,12 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceProtectedMemoryFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceBlendOperationAdvancedFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceMultiDrawFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceInlineUniformBlockFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance4FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceInlineUniformBlockFeatures = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceMaintenance4Features = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDrawParametersFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderFloat16Int8Features = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceHostQueryResetFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceGlobalPriorityQueryFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceGlobalPriorityQueryFeaturesKHR = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceDeviceMemoryReportFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceDescriptorIndexingFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceTimelineSemaphoreFeatures = ()
@@ -1103,7 +1106,7 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceBufferDeviceAddressFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceImagelessFramebufferFeatures = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceTextureCompressionASTCHDRFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceCooperativeMatrixFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcrImageArraysFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDevicePerformanceQueryFeaturesKHR = ()
@@ -1116,44 +1119,45 @@
   Extends PhysicalDeviceFeatures2 PhysicalDeviceSeparateDepthStencilLayoutsFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderDemoteToHelperInvocationFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceTexelBufferAlignmentFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubgroupSizeControlFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSubgroupSizeControlFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceLineRasterizationFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineCreationCacheControlFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDevicePipelineCreationCacheControlFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan11Features = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan12Features = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceVulkan13Features = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceCoherentMemoryFeaturesAMD = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceCustomBorderColorFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceBorderColorSwizzleFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedDynamicStateFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceExtendedDynamicState2FeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceDiagnosticsConfigFeaturesNV = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceRobustness2FeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageRobustnessFeaturesEXT = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceImageRobustnessFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = ()
   Extends PhysicalDeviceFeatures2 PhysicalDevicePortabilitySubsetFeaturesKHR = ()
   Extends PhysicalDeviceFeatures2 PhysicalDevice4444FormatsFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceSubpassShadingFeaturesHUAWEI = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateFeaturesKHR = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTerminateInvocationFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderTerminateInvocationFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceDepthClipControlFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceVertexInputDynamicStateFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceExternalMemoryRDMAFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceColorWriteEnableFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceSynchronization2FeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceSynchronization2Features = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceInheritedViewportScissorFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceProvokingVertexFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerDotProductFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceShaderIntegerDotProductFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceRayTracingMotionBlurFeaturesNV = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceRGBA10X6FormatsFeaturesEXT = ()
-  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingFeaturesKHR = ()
+  Extends PhysicalDeviceFeatures2 PhysicalDeviceDynamicRenderingFeatures = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceImageViewMinLodFeaturesEXT = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = ()
   Extends PhysicalDeviceFeatures2 PhysicalDeviceLinearColorAttachmentFeaturesNV = ()
@@ -1177,9 +1181,9 @@
   Extends PhysicalDeviceProperties2 PhysicalDeviceSamplerFilterMinmaxProperties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceSampleLocationsPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceBlendOperationAdvancedPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceInlineUniformBlockPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceInlineUniformBlockProperties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance3Properties = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance4PropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceMaintenance4Properties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceFloatControlsProperties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceExternalMemoryHostPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceConservativeRasterizationPropertiesEXT = ()
@@ -1202,19 +1206,20 @@
   Extends PhysicalDeviceProperties2 PhysicalDeviceCooperativeMatrixPropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDevicePerformanceQueryPropertiesKHR = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceShaderSMBuiltinsPropertiesNV = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceTexelBufferAlignmentPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupSizeControlPropertiesEXT = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceTexelBufferAlignmentProperties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceSubgroupSizeControlProperties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceSubpassShadingPropertiesHUAWEI = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceLineRasterizationPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan11Properties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan12Properties = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceVulkan13Properties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceCustomBorderColorPropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceRobustness2PropertiesEXT = ()
   Extends PhysicalDeviceProperties2 PhysicalDevicePortabilitySubsetPropertiesKHR = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRatePropertiesKHR = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceProvokingVertexPropertiesEXT = ()
-  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderIntegerDotProductPropertiesKHR = ()
+  Extends PhysicalDeviceProperties2 PhysicalDeviceShaderIntegerDotProductProperties = ()
   Extends PhysicalDeviceProperties2 PhysicalDeviceDrmPropertiesEXT = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveInfoEXT = ()
   Extends PhysicalDeviceSurfaceInfo2KHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
@@ -1230,7 +1235,7 @@
   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationDepthClipStateCreateInfoEXT = ()
   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationLineStateCreateInfoEXT = ()
   Extends PipelineRasterizationStateCreateInfo PipelineRasterizationProvokingVertexStateCreateInfoEXT = ()
-  Extends PipelineShaderStageCreateInfo PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = ()
+  Extends PipelineShaderStageCreateInfo PipelineShaderStageRequiredSubgroupSizeCreateInfo = ()
   Extends PipelineTessellationStateCreateInfo PipelineTessellationDomainOriginStateCreateInfo = ()
   Extends PipelineVertexInputStateCreateInfo PipelineVertexInputDivisorStateCreateInfoEXT = ()
   Extends PipelineViewportStateCreateInfo PipelineViewportWScalingStateCreateInfoNV = ()
@@ -1247,11 +1252,11 @@
   Extends PresentInfoKHR PresentFrameTokenGGP = ()
   Extends QueryPoolCreateInfo QueryPoolPerformanceCreateInfoKHR = ()
   Extends QueryPoolCreateInfo QueryPoolPerformanceQueryCreateInfoINTEL = ()
-  Extends QueueFamilyProperties2 QueueFamilyGlobalPriorityPropertiesEXT = ()
+  Extends QueueFamilyProperties2 QueueFamilyGlobalPriorityPropertiesKHR = ()
   Extends QueueFamilyProperties2 QueueFamilyCheckpointPropertiesNV = ()
   Extends QueueFamilyProperties2 QueueFamilyCheckpointProperties2NV = ()
-  Extends RayTracingPipelineCreateInfoKHR PipelineCreationFeedbackCreateInfoEXT = ()
-  Extends RayTracingPipelineCreateInfoNV PipelineCreationFeedbackCreateInfoEXT = ()
+  Extends RayTracingPipelineCreateInfoKHR PipelineCreationFeedbackCreateInfo = ()
+  Extends RayTracingPipelineCreateInfoNV PipelineCreationFeedbackCreateInfo = ()
   Extends RenderPassBeginInfo DeviceGroupRenderPassBeginInfo = ()
   Extends RenderPassBeginInfo RenderPassSampleLocationsBeginInfoEXT = ()
   Extends RenderPassBeginInfo RenderPassAttachmentBeginInfo = ()
@@ -1260,10 +1265,10 @@
   Extends RenderPassCreateInfo RenderPassInputAttachmentAspectCreateInfo = ()
   Extends RenderPassCreateInfo RenderPassFragmentDensityMapCreateInfoEXT = ()
   Extends RenderPassCreateInfo2 RenderPassFragmentDensityMapCreateInfoEXT = ()
-  Extends RenderingInfoKHR DeviceGroupRenderPassBeginInfo = ()
-  Extends RenderingInfoKHR RenderingFragmentShadingRateAttachmentInfoKHR = ()
-  Extends RenderingInfoKHR RenderingFragmentDensityMapAttachmentInfoEXT = ()
-  Extends RenderingInfoKHR MultiviewPerViewAttributesInfoNVX = ()
+  Extends RenderingInfo DeviceGroupRenderPassBeginInfo = ()
+  Extends RenderingInfo RenderingFragmentShadingRateAttachmentInfoKHR = ()
+  Extends RenderingInfo RenderingFragmentDensityMapAttachmentInfoEXT = ()
+  Extends RenderingInfo MultiviewPerViewAttributesInfoNVX = ()
   Extends SamplerCreateInfo SamplerYcbcrConversionInfo = ()
   Extends SamplerCreateInfo SamplerReductionModeCreateInfo = ()
   Extends SamplerCreateInfo SamplerCustomBorderColorCreateInfoEXT = ()
@@ -1280,10 +1285,10 @@
   Extends SubmitInfo ProtectedSubmitInfo = ()
   Extends SubmitInfo TimelineSemaphoreSubmitInfo = ()
   Extends SubmitInfo PerformanceQuerySubmitInfoKHR = ()
-  Extends SubmitInfo2KHR Win32KeyedMutexAcquireReleaseInfoNV = ()
-  Extends SubmitInfo2KHR Win32KeyedMutexAcquireReleaseInfoKHR = ()
-  Extends SubmitInfo2KHR PerformanceQuerySubmitInfoKHR = ()
-  Extends SubpassDependency2 MemoryBarrier2KHR = ()
+  Extends SubmitInfo2 Win32KeyedMutexAcquireReleaseInfoNV = ()
+  Extends SubmitInfo2 Win32KeyedMutexAcquireReleaseInfoKHR = ()
+  Extends SubmitInfo2 PerformanceQuerySubmitInfoKHR = ()
+  Extends SubpassDependency2 MemoryBarrier2 = ()
   Extends SubpassDescription2 SubpassDescriptionDepthStencilResolve = ()
   Extends SubpassDescription2 FragmentShadingRateAttachmentInfoKHR = ()
   Extends SubpassEndInfo SubpassFragmentDensityMapOffsetEndInfoQCOM = ()
@@ -1297,7 +1302,7 @@
   Extends SwapchainCreateInfoKHR ImageFormatListCreateInfo = ()
   Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveInfoEXT = ()
   Extends SwapchainCreateInfoKHR SurfaceFullScreenExclusiveWin32InfoEXT = ()
-  Extends WriteDescriptorSet WriteDescriptorSetInlineUniformBlockEXT = ()
+  Extends WriteDescriptorSet WriteDescriptorSetInlineUniformBlock = ()
   Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureKHR = ()
   Extends WriteDescriptorSet WriteDescriptorSetAccelerationStructureNV = ()
   Extends a b = TypeError (ShowType a :<>: Text " is not extended by " :<>: ShowType b)
@@ -1416,8 +1421,8 @@
   STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV -> go @ExportMemoryWin32HandleInfoNV
   STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV -> go @Win32KeyedMutexAcquireReleaseInfoNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV
-  STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT -> go @DevicePrivateDataCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT -> go @PhysicalDevicePrivateDataFeaturesEXT
+  STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO -> go @DevicePrivateDataCreateInfo
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES -> go @PhysicalDevicePrivateDataFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV -> go @PhysicalDeviceDeviceGeneratedCommandsPropertiesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT -> go @PhysicalDeviceMultiDrawPropertiesEXT
   STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV -> go @GraphicsPipelineShaderGroupsCreateInfoNV
@@ -1499,23 +1504,23 @@
   STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT -> go @PhysicalDeviceMultiDrawFeaturesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT -> go @PhysicalDeviceBlendOperationAdvancedPropertiesEXT
   STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT -> go @PipelineColorBlendAdvancedStateCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT -> go @PhysicalDeviceInlineUniformBlockFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT -> go @PhysicalDeviceInlineUniformBlockPropertiesEXT
-  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT -> go @WriteDescriptorSetInlineUniformBlockEXT
-  STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT -> go @DescriptorPoolInlineUniformBlockCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES -> go @PhysicalDeviceInlineUniformBlockFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES -> go @PhysicalDeviceInlineUniformBlockProperties
+  STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK -> go @WriteDescriptorSetInlineUniformBlock
+  STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO -> go @DescriptorPoolInlineUniformBlockCreateInfo
   STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV -> go @PipelineCoverageModulationStateCreateInfoNV
   STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO -> go @ImageFormatListCreateInfo
   STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT -> go @ShaderModuleValidationCacheCreateInfoEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES -> go @PhysicalDeviceMaintenance3Properties
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR -> go @PhysicalDeviceMaintenance4FeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR -> go @PhysicalDeviceMaintenance4PropertiesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES -> go @PhysicalDeviceMaintenance4Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES -> go @PhysicalDeviceMaintenance4Properties
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES -> go @PhysicalDeviceShaderDrawParametersFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES -> go @PhysicalDeviceShaderFloat16Int8Features
   STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES -> go @PhysicalDeviceFloatControlsProperties
   STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES -> go @PhysicalDeviceHostQueryResetFeatures
-  STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT -> go @DeviceQueueGlobalPriorityCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT -> go @PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-  STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT -> go @QueueFamilyGlobalPriorityPropertiesEXT
+  STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR -> go @DeviceQueueGlobalPriorityCreateInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR -> go @PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+  STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR -> go @QueueFamilyGlobalPriorityPropertiesKHR
   STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT -> go @DebugUtilsMessengerCreateInfoEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT -> go @PhysicalDeviceDeviceMemoryReportFeaturesEXT
   STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT -> go @DeviceDeviceMemoryReportCreateInfoEXT
@@ -1613,12 +1618,12 @@
   STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES -> go @PhysicalDeviceImagelessFramebufferFeatures
   STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO -> go @FramebufferAttachmentsCreateInfo
   STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO -> go @RenderPassAttachmentBeginInfo
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT -> go @PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES -> go @PhysicalDeviceTextureCompressionASTCHDRFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV -> go @PhysicalDeviceCooperativeMatrixFeaturesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV -> go @PhysicalDeviceCooperativeMatrixPropertiesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT -> go @PhysicalDeviceYcbcrImageArraysFeaturesEXT
   STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP -> go @PresentFrameTokenGGP
-  STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT -> go @PipelineCreationFeedbackCreateInfoEXT
+  STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO -> go @PipelineCreationFeedbackCreateInfo
   STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT -> go @SurfaceFullScreenExclusiveInfoEXT
   STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT -> go @SurfaceFullScreenExclusiveWin32InfoEXT
   STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT -> go @SurfaceCapabilitiesFullScreenExclusiveEXT
@@ -1640,23 +1645,25 @@
   STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT -> go @PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
   STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT -> go @AttachmentDescriptionStencilLayout
   STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR -> go @PhysicalDevicePipelineExecutablePropertiesFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT -> go @PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES -> go @PhysicalDeviceShaderDemoteToHelperInvocationFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT -> go @PhysicalDeviceTexelBufferAlignmentFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT -> go @PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT -> go @PhysicalDeviceSubgroupSizeControlFeaturesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT -> go @PhysicalDeviceSubgroupSizeControlPropertiesEXT
-  STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT -> go @PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES -> go @PhysicalDeviceTexelBufferAlignmentProperties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES -> go @PhysicalDeviceSubgroupSizeControlFeatures
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES -> go @PhysicalDeviceSubgroupSizeControlProperties
+  STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO -> go @PipelineShaderStageRequiredSubgroupSizeCreateInfo
   STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI -> go @SubpassShadingPipelineCreateInfoHUAWEI
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI -> go @PhysicalDeviceSubpassShadingPropertiesHUAWEI
   STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO -> go @MemoryOpaqueCaptureAddressAllocateInfo
   STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT -> go @PhysicalDeviceLineRasterizationFeaturesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT -> go @PhysicalDeviceLineRasterizationPropertiesEXT
   STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationLineStateCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT -> go @PhysicalDevicePipelineCreationCacheControlFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES -> go @PhysicalDevicePipelineCreationCacheControlFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES -> go @PhysicalDeviceVulkan11Features
   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES -> go @PhysicalDeviceVulkan11Properties
   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES -> go @PhysicalDeviceVulkan12Features
   STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES -> go @PhysicalDeviceVulkan12Properties
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES -> go @PhysicalDeviceVulkan13Features
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES -> go @PhysicalDeviceVulkan13Properties
   STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD -> go @PipelineCompilerControlCreateInfoAMD
   STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD -> go @PhysicalDeviceCoherentMemoryFeaturesAMD
   STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT contains an undiscriminated union (ClearColorValue) and can't be safely peeked") Nothing Nothing
@@ -1671,11 +1678,11 @@
   STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM -> go @CommandBufferInheritanceRenderPassTransformInfoQCOM
   STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV -> go @PhysicalDeviceDiagnosticsConfigFeaturesNV
   STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV -> go @DeviceDiagnosticsConfigCreateInfoNV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR -> go @PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES -> go @PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR -> go @PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR
   STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT -> go @PhysicalDeviceRobustness2FeaturesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT -> go @PhysicalDeviceRobustness2PropertiesEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT -> go @PhysicalDeviceImageRobustnessFeaturesEXT
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES -> go @PhysicalDeviceImageRobustnessFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR -> go @PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR
   STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR -> go @PhysicalDevicePortabilitySubsetFeaturesKHR
   STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR -> go @PhysicalDevicePortabilitySubsetPropertiesKHR
@@ -1686,7 +1693,7 @@
   STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR -> go @PipelineFragmentShadingRateStateCreateInfoKHR
   STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR -> go @PhysicalDeviceFragmentShadingRateFeaturesKHR
   STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR -> go @PhysicalDeviceFragmentShadingRatePropertiesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR -> go @PhysicalDeviceShaderTerminateInvocationFeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES -> go @PhysicalDeviceShaderTerminateInvocationFeatures
   STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV -> go @PhysicalDeviceFragmentShadingRateEnumsFeaturesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV -> go @PhysicalDeviceFragmentShadingRateEnumsPropertiesNV
   STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV -> go @PipelineFragmentShadingRateEnumStateCreateInfoNV
@@ -1698,17 +1705,17 @@
   STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV -> go @PhysicalDeviceExternalMemoryRDMAFeaturesNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT -> go @PhysicalDeviceColorWriteEnableFeaturesEXT
   STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT -> go @PipelineColorWriteCreateInfoEXT
-  STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR -> go @MemoryBarrier2KHR
+  STRUCTURE_TYPE_MEMORY_BARRIER_2 -> go @MemoryBarrier2
   STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV -> go @QueueFamilyCheckpointProperties2NV
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR -> go @PhysicalDeviceSynchronization2FeaturesKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES -> go @PhysicalDeviceSynchronization2Features
   STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV -> go @PhysicalDeviceInheritedViewportScissorFeaturesNV
   STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV -> go @CommandBufferInheritanceViewportScissorInfoNV
   STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT -> go @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT -> go @PhysicalDeviceProvokingVertexFeaturesEXT
   STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT -> go @PhysicalDeviceProvokingVertexPropertiesEXT
   STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT -> go @PipelineRasterizationProvokingVertexStateCreateInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR -> go @PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR -> go @PhysicalDeviceShaderIntegerDotProductPropertiesKHR
+  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
   STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV -> go @PhysicalDeviceRayTracingMotionBlurFeaturesNV
   STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV -> throwIO $ IOError Nothing InvalidArgument "peekChainHead" ("struct type STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV contains an undiscriminated union (DeviceOrHostAddressConstKHR) and can't be safely peeked") Nothing Nothing
@@ -1717,14 +1724,14 @@
   STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA -> go @BufferCollectionImageCreateInfoFUCHSIA
   STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA -> go @BufferCollectionBufferCreateInfoFUCHSIA
   STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT -> go @PhysicalDeviceRGBA10X6FormatsFeaturesEXT
-  STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR -> go @FormatProperties3KHR
+  STRUCTURE_TYPE_FORMAT_PROPERTIES_3 -> go @FormatProperties3
   STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT -> go @DrmFormatModifierPropertiesList2EXT
   STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID -> go @AndroidHardwareBufferFormatProperties2ANDROID
-  STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR -> go @PipelineRenderingCreateInfoKHR
+  STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO -> go @PipelineRenderingCreateInfo
   STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR -> go @RenderingFragmentShadingRateAttachmentInfoKHR
   STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT -> go @RenderingFragmentDensityMapAttachmentInfoEXT
-  STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR -> go @PhysicalDeviceDynamicRenderingFeaturesKHR
-  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR -> go @CommandBufferInheritanceRenderingInfoKHR
+  STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES -> go @PhysicalDeviceDynamicRenderingFeatures
+  STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO -> go @CommandBufferInheritanceRenderingInfo
   STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD -> go @AttachmentSampleCountInfoAMD
   STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX -> go @MultiviewPerViewAttributesInfoNVX
   STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT -> go @PhysicalDeviceImageViewMinLodFeaturesEXT
@@ -1798,8 +1805,8 @@
 {-# complete (::&) :: ExportMemoryWin32HandleInfoNV #-}
 {-# complete (::&) :: Win32KeyedMutexAcquireReleaseInfoNV #-}
 {-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsFeaturesNV #-}
-{-# complete (::&) :: DevicePrivateDataCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDevicePrivateDataFeaturesEXT #-}
+{-# complete (::&) :: DevicePrivateDataCreateInfo #-}
+{-# complete (::&) :: PhysicalDevicePrivateDataFeatures #-}
 {-# complete (::&) :: PhysicalDeviceDeviceGeneratedCommandsPropertiesNV #-}
 {-# complete (::&) :: PhysicalDeviceMultiDrawPropertiesEXT #-}
 {-# complete (::&) :: GraphicsPipelineShaderGroupsCreateInfoNV #-}
@@ -1881,23 +1888,23 @@
 {-# complete (::&) :: PhysicalDeviceMultiDrawFeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceBlendOperationAdvancedPropertiesEXT #-}
 {-# complete (::&) :: PipelineColorBlendAdvancedStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceInlineUniformBlockFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceInlineUniformBlockPropertiesEXT #-}
-{-# complete (::&) :: WriteDescriptorSetInlineUniformBlockEXT #-}
-{-# complete (::&) :: DescriptorPoolInlineUniformBlockCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceInlineUniformBlockFeatures #-}
+{-# complete (::&) :: PhysicalDeviceInlineUniformBlockProperties #-}
+{-# complete (::&) :: WriteDescriptorSetInlineUniformBlock #-}
+{-# complete (::&) :: DescriptorPoolInlineUniformBlockCreateInfo #-}
 {-# complete (::&) :: PipelineCoverageModulationStateCreateInfoNV #-}
 {-# complete (::&) :: ImageFormatListCreateInfo #-}
 {-# complete (::&) :: ShaderModuleValidationCacheCreateInfoEXT #-}
 {-# complete (::&) :: PhysicalDeviceMaintenance3Properties #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance4FeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceMaintenance4PropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance4Features #-}
+{-# complete (::&) :: PhysicalDeviceMaintenance4Properties #-}
 {-# complete (::&) :: PhysicalDeviceShaderDrawParametersFeatures #-}
 {-# complete (::&) :: PhysicalDeviceShaderFloat16Int8Features #-}
 {-# complete (::&) :: PhysicalDeviceFloatControlsProperties #-}
 {-# complete (::&) :: PhysicalDeviceHostQueryResetFeatures #-}
-{-# complete (::&) :: DeviceQueueGlobalPriorityCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceGlobalPriorityQueryFeaturesEXT #-}
-{-# complete (::&) :: QueueFamilyGlobalPriorityPropertiesEXT #-}
+{-# complete (::&) :: DeviceQueueGlobalPriorityCreateInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceGlobalPriorityQueryFeaturesKHR #-}
+{-# complete (::&) :: QueueFamilyGlobalPriorityPropertiesKHR #-}
 {-# complete (::&) :: DebugUtilsMessengerCreateInfoEXT #-}
 {-# complete (::&) :: PhysicalDeviceDeviceMemoryReportFeaturesEXT #-}
 {-# complete (::&) :: DeviceDeviceMemoryReportCreateInfoEXT #-}
@@ -1995,12 +2002,12 @@
 {-# complete (::&) :: PhysicalDeviceImagelessFramebufferFeatures #-}
 {-# complete (::&) :: FramebufferAttachmentsCreateInfo #-}
 {-# complete (::&) :: RenderPassAttachmentBeginInfo #-}
-{-# complete (::&) :: PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceTextureCompressionASTCHDRFeatures #-}
 {-# complete (::&) :: PhysicalDeviceCooperativeMatrixFeaturesNV #-}
 {-# complete (::&) :: PhysicalDeviceCooperativeMatrixPropertiesNV #-}
 {-# complete (::&) :: PhysicalDeviceYcbcrImageArraysFeaturesEXT #-}
 {-# complete (::&) :: PresentFrameTokenGGP #-}
-{-# complete (::&) :: PipelineCreationFeedbackCreateInfoEXT #-}
+{-# complete (::&) :: PipelineCreationFeedbackCreateInfo #-}
 {-# complete (::&) :: SurfaceFullScreenExclusiveInfoEXT #-}
 {-# complete (::&) :: SurfaceFullScreenExclusiveWin32InfoEXT #-}
 {-# complete (::&) :: SurfaceCapabilitiesFullScreenExclusiveEXT #-}
@@ -2022,23 +2029,25 @@
 {-# complete (::&) :: PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT #-}
 {-# complete (::&) :: AttachmentDescriptionStencilLayout #-}
 {-# complete (::&) :: PhysicalDevicePipelineExecutablePropertiesFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceShaderDemoteToHelperInvocationFeatures #-}
 {-# complete (::&) :: PhysicalDeviceTexelBufferAlignmentFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceTexelBufferAlignmentPropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlFeaturesEXT #-}
-{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlPropertiesEXT #-}
-{-# complete (::&) :: PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT #-}
+{-# complete (::&) :: PhysicalDeviceTexelBufferAlignmentProperties #-}
+{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlFeatures #-}
+{-# complete (::&) :: PhysicalDeviceSubgroupSizeControlProperties #-}
+{-# complete (::&) :: PipelineShaderStageRequiredSubgroupSizeCreateInfo #-}
 {-# complete (::&) :: SubpassShadingPipelineCreateInfoHUAWEI #-}
 {-# complete (::&) :: PhysicalDeviceSubpassShadingPropertiesHUAWEI #-}
 {-# complete (::&) :: MemoryOpaqueCaptureAddressAllocateInfo #-}
 {-# complete (::&) :: PhysicalDeviceLineRasterizationFeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceLineRasterizationPropertiesEXT #-}
 {-# complete (::&) :: PipelineRasterizationLineStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDevicePipelineCreationCacheControlFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDevicePipelineCreationCacheControlFeatures #-}
 {-# complete (::&) :: PhysicalDeviceVulkan11Features #-}
 {-# complete (::&) :: PhysicalDeviceVulkan11Properties #-}
 {-# complete (::&) :: PhysicalDeviceVulkan12Features #-}
 {-# complete (::&) :: PhysicalDeviceVulkan12Properties #-}
+{-# complete (::&) :: PhysicalDeviceVulkan13Features #-}
+{-# complete (::&) :: PhysicalDeviceVulkan13Properties #-}
 {-# complete (::&) :: PipelineCompilerControlCreateInfoAMD #-}
 {-# complete (::&) :: PhysicalDeviceCoherentMemoryFeaturesAMD #-}
 {-# complete (::&) :: SamplerCustomBorderColorCreateInfoEXT #-}
@@ -2053,11 +2062,11 @@
 {-# complete (::&) :: CommandBufferInheritanceRenderPassTransformInfoQCOM #-}
 {-# complete (::&) :: PhysicalDeviceDiagnosticsConfigFeaturesNV #-}
 {-# complete (::&) :: DeviceDiagnosticsConfigCreateInfoNV #-}
-{-# complete (::&) :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures #-}
 {-# complete (::&) :: PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR #-}
 {-# complete (::&) :: PhysicalDeviceRobustness2FeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceRobustness2PropertiesEXT #-}
-{-# complete (::&) :: PhysicalDeviceImageRobustnessFeaturesEXT #-}
+{-# complete (::&) :: PhysicalDeviceImageRobustnessFeatures #-}
 {-# complete (::&) :: PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR #-}
 {-# complete (::&) :: PhysicalDevicePortabilitySubsetFeaturesKHR #-}
 {-# complete (::&) :: PhysicalDevicePortabilitySubsetPropertiesKHR #-}
@@ -2068,7 +2077,7 @@
 {-# complete (::&) :: PipelineFragmentShadingRateStateCreateInfoKHR #-}
 {-# complete (::&) :: PhysicalDeviceFragmentShadingRateFeaturesKHR #-}
 {-# complete (::&) :: PhysicalDeviceFragmentShadingRatePropertiesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderTerminateInvocationFeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderTerminateInvocationFeatures #-}
 {-# complete (::&) :: PhysicalDeviceFragmentShadingRateEnumsFeaturesNV #-}
 {-# complete (::&) :: PhysicalDeviceFragmentShadingRateEnumsPropertiesNV #-}
 {-# complete (::&) :: PipelineFragmentShadingRateEnumStateCreateInfoNV #-}
@@ -2080,17 +2089,17 @@
 {-# complete (::&) :: PhysicalDeviceExternalMemoryRDMAFeaturesNV #-}
 {-# complete (::&) :: PhysicalDeviceColorWriteEnableFeaturesEXT #-}
 {-# complete (::&) :: PipelineColorWriteCreateInfoEXT #-}
-{-# complete (::&) :: MemoryBarrier2KHR #-}
+{-# complete (::&) :: MemoryBarrier2 #-}
 {-# complete (::&) :: QueueFamilyCheckpointProperties2NV #-}
-{-# complete (::&) :: PhysicalDeviceSynchronization2FeaturesKHR #-}
+{-# complete (::&) :: PhysicalDeviceSynchronization2Features #-}
 {-# complete (::&) :: PhysicalDeviceInheritedViewportScissorFeaturesNV #-}
 {-# complete (::&) :: CommandBufferInheritanceViewportScissorInfoNV #-}
 {-# complete (::&) :: PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceProvokingVertexFeaturesEXT #-}
 {-# complete (::&) :: PhysicalDeviceProvokingVertexPropertiesEXT #-}
 {-# complete (::&) :: PipelineRasterizationProvokingVertexStateCreateInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductFeaturesKHR #-}
-{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductPropertiesKHR #-}
+{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductFeatures #-}
+{-# complete (::&) :: PhysicalDeviceShaderIntegerDotProductProperties #-}
 {-# complete (::&) :: PhysicalDeviceDrmPropertiesEXT #-}
 {-# complete (::&) :: PhysicalDeviceRayTracingMotionBlurFeaturesNV #-}
 {-# complete (::&) :: AccelerationStructureGeometryMotionTrianglesDataNV #-}
@@ -2099,14 +2108,14 @@
 {-# complete (::&) :: BufferCollectionImageCreateInfoFUCHSIA #-}
 {-# complete (::&) :: BufferCollectionBufferCreateInfoFUCHSIA #-}
 {-# complete (::&) :: PhysicalDeviceRGBA10X6FormatsFeaturesEXT #-}
-{-# complete (::&) :: FormatProperties3KHR #-}
+{-# complete (::&) :: FormatProperties3 #-}
 {-# complete (::&) :: DrmFormatModifierPropertiesList2EXT #-}
 {-# complete (::&) :: AndroidHardwareBufferFormatProperties2ANDROID #-}
-{-# complete (::&) :: PipelineRenderingCreateInfoKHR #-}
+{-# complete (::&) :: PipelineRenderingCreateInfo #-}
 {-# complete (::&) :: RenderingFragmentShadingRateAttachmentInfoKHR #-}
 {-# complete (::&) :: RenderingFragmentDensityMapAttachmentInfoEXT #-}
-{-# complete (::&) :: PhysicalDeviceDynamicRenderingFeaturesKHR #-}
-{-# complete (::&) :: CommandBufferInheritanceRenderingInfoKHR #-}
+{-# complete (::&) :: PhysicalDeviceDynamicRenderingFeatures #-}
+{-# complete (::&) :: CommandBufferInheritanceRenderingInfo #-}
 {-# complete (::&) :: AttachmentSampleCountInfoAMD #-}
 {-# complete (::&) :: MultiviewPerViewAttributesInfoNVX #-}
 {-# complete (::&) :: PhysicalDeviceImageViewMinLodFeaturesEXT #-}
diff --git a/src/Vulkan/Core10/APIConstants.hs b/src/Vulkan/Core10/APIConstants.hs
--- a/src/Vulkan/Core10/APIConstants.hs
+++ b/src/Vulkan/Core10/APIConstants.hs
@@ -7,6 +7,7 @@
                                    , MAX_DRIVER_NAME_SIZE_KHR
                                    , MAX_DRIVER_INFO_SIZE_KHR
                                    , SHADER_UNUSED_NV
+                                   , MAX_GLOBAL_PRIORITY_SIZE_EXT
                                    , MAX_PHYSICAL_DEVICE_NAME_SIZE
                                    , pattern MAX_PHYSICAL_DEVICE_NAME_SIZE
                                    , UUID_SIZE
@@ -45,8 +46,8 @@
                                    , pattern MAX_DRIVER_INFO_SIZE
                                    , SHADER_UNUSED_KHR
                                    , pattern SHADER_UNUSED_KHR
-                                   , MAX_GLOBAL_PRIORITY_SIZE_EXT
-                                   , pattern MAX_GLOBAL_PRIORITY_SIZE_EXT
+                                   , MAX_GLOBAL_PRIORITY_SIZE_KHR
+                                   , pattern MAX_GLOBAL_PRIORITY_SIZE_KHR
                                    , pattern NULL_HANDLE
                                    , IsHandle
                                    , HasObjectType(..)
@@ -93,6 +94,10 @@
 type SHADER_UNUSED_NV = SHADER_UNUSED_KHR
 
 
+-- No documentation found for TopLevel "VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"
+type MAX_GLOBAL_PRIORITY_SIZE_EXT = MAX_GLOBAL_PRIORITY_SIZE_KHR
+
+
 type MAX_PHYSICAL_DEVICE_NAME_SIZE = 256
 
 -- | VK_MAX_PHYSICAL_DEVICE_NAME_SIZE - Length of a physical device name
@@ -316,11 +321,16 @@
 pattern SHADER_UNUSED_KHR = 0xffffffff
 
 
-type MAX_GLOBAL_PRIORITY_SIZE_EXT = 16
+type MAX_GLOBAL_PRIORITY_SIZE_KHR = 16
 
--- No documentation found for TopLevel "VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"
-pattern MAX_GLOBAL_PRIORITY_SIZE_EXT :: forall a . Integral a => a
-pattern MAX_GLOBAL_PRIORITY_SIZE_EXT = 16
+-- | VK_MAX_GLOBAL_PRIORITY_SIZE_KHR - Length of an array of global queue
+-- priorities
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>
+pattern MAX_GLOBAL_PRIORITY_SIZE_KHR :: forall a . Integral a => a
+pattern MAX_GLOBAL_PRIORITY_SIZE_KHR = 16
 
 
 -- | VK_NULL_HANDLE - Reserved non-valid object handle
diff --git a/src/Vulkan/Core10/APIConstants.hs-boot b/src/Vulkan/Core10/APIConstants.hs-boot
--- a/src/Vulkan/Core10/APIConstants.hs-boot
+++ b/src/Vulkan/Core10/APIConstants.hs-boot
@@ -6,6 +6,7 @@
                                    , MAX_DRIVER_NAME_SIZE
                                    , MAX_DRIVER_INFO_SIZE
                                    , SHADER_UNUSED_KHR
+                                   , MAX_GLOBAL_PRIORITY_SIZE_KHR
                                    ) where
 
 
@@ -26,4 +27,7 @@
 
 
 type SHADER_UNUSED_KHR = 0xffffffff
+
+
+type MAX_GLOBAL_PRIORITY_SIZE_KHR = 16
 
diff --git a/src/Vulkan/Core10/AllocationCallbacks.hs b/src/Vulkan/Core10/AllocationCallbacks.hs
--- a/src/Vulkan/Core10/AllocationCallbacks.hs
+++ b/src/Vulkan/Core10/AllocationCallbacks.hs
@@ -87,6 +87,7 @@
 -- 'Vulkan.Extensions.VK_EXT_metal_surface.createMetalSurfaceEXT',
 -- 'Vulkan.Core10.PipelineCache.createPipelineCache',
 -- 'Vulkan.Core10.PipelineLayout.createPipelineLayout',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.createPrivateDataSlot',
 -- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT',
 -- 'Vulkan.Core10.Query.createQueryPool',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
@@ -136,6 +137,7 @@
 -- 'Vulkan.Core10.Pipeline.destroyPipeline',
 -- 'Vulkan.Core10.PipelineCache.destroyPipelineCache',
 -- 'Vulkan.Core10.PipelineLayout.destroyPipelineLayout',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.destroyPrivateDataSlot',
 -- 'Vulkan.Extensions.VK_EXT_private_data.destroyPrivateDataSlotEXT',
 -- 'Vulkan.Core10.Query.destroyQueryPool',
 -- 'Vulkan.Core10.Pass.destroyRenderPass',
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
@@ -163,7 +163,7 @@
                 -- parameters affecting creation of the buffer.
                 (BufferCreateInfo a)
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io (Buffer)
@@ -252,7 +252,7 @@
               -> -- | @buffer@ is the buffer to destroy.
                  Buffer
               -> -- | @pAllocator@ controls host memory allocation as described in the
-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                  -- chapter.
                  ("allocator" ::: Maybe AllocationCallbacks)
               -> io ()
@@ -295,17 +295,17 @@
 --     for the @physicalDevice@ that was used to create @device@
 --
 -- -   #VUID-VkBufferCreateInfo-flags-00915# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBinding sparse bindings>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseBinding sparse bindings>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_BINDING_BIT'
 --
 -- -   #VUID-VkBufferCreateInfo-flags-00916# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyBuffer sparse buffer residency>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyBuffer sparse buffer residency>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkBufferCreateInfo-flags-00917# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_ALIASED_BIT'
 --
@@ -365,14 +365,14 @@
 -- -   #VUID-VkBufferCreateInfo-flags-03338# If @flags@ includes
 --     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT ::bufferDeviceAddressCaptureReplay>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplayEXT ::bufferDeviceAddressCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkBufferCreateInfo-size-06409# @size@ /must/ be less than or
 --     equal to
---     'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4PropertiesKHR'::@maxBufferSize@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties'::@maxBufferSize@
 --
 -- == Valid Usage (Implicit)
 --
@@ -419,7 +419,7 @@
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferConstraintsInfoFUCHSIA',
 -- 'Vulkan.Core10.Enums.BufferCreateFlagBits.BufferCreateFlags',
 -- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BufferUsageFlags',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.DeviceBufferMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.DeviceBufferMemoryRequirements',
 -- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
 -- 'Vulkan.Core10.Enums.SharingMode.SharingMode',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType', 'createBuffer'
diff --git a/src/Vulkan/Core10/BufferView.hs b/src/Vulkan/Core10/BufferView.hs
--- a/src/Vulkan/Core10/BufferView.hs
+++ b/src/Vulkan/Core10/BufferView.hs
@@ -112,7 +112,7 @@
                     -- containing parameters to be used to create the buffer view.
                     BufferViewCreateInfo
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io (BufferView)
@@ -202,7 +202,7 @@
                   -> -- | @bufferView@ is the buffer view to destroy.
                      BufferView
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io ()
@@ -239,7 +239,7 @@
 --     elements given by (⌊@range@ \/ (texel block size)⌋ × (texels per
 --     block)) where texel block size and texels per block are as defined
 --     in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
 --     table for @format@, /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
 --
@@ -252,7 +252,7 @@
 --     elements given by (⌊(size - @offset@) \/ (texel block size)⌋ ×
 --     (texels per block)) where size is the size of @buffer@, and texel
 --     block size and texels per block are as defined in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
 --     table for @format@, /must/ be less than or equal to
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxTexelBufferElements@
 --
@@ -289,33 +289,33 @@
 --     'Vulkan.Core10.Handles.DeviceMemory' object
 --
 -- -   #VUID-VkBufferViewCreateInfo-offset-02749# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
 --     feature is not enabled, @offset@ /must/ be a multiple of
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@
 --
 -- -   #VUID-VkBufferViewCreateInfo-buffer-02750# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
 --     feature is enabled and if @buffer@ was created with @usage@
 --     containing
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT',
 --     @offset@ /must/ be a multiple of the lesser of
---     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@storageTexelBufferOffsetAlignmentBytes@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties'::@storageTexelBufferOffsetAlignmentBytes@
 --     or, if
---     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@storageTexelBufferOffsetSingleTexelAlignment@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties'::@storageTexelBufferOffsetSingleTexelAlignment@
 --     is 'Vulkan.Core10.FundamentalTypes.TRUE', the size of a texel of the
 --     requested @format@. If the size of a texel is a multiple of three
 --     bytes, then the size of a single component of @format@ is used
 --     instead
 --
 -- -   #VUID-VkBufferViewCreateInfo-buffer-02751# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
 --     feature is enabled and if @buffer@ was created with @usage@
 --     containing
 --     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT',
 --     @offset@ /must/ be a multiple of the lesser of
---     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@uniformTexelBufferOffsetAlignmentBytes@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties'::@uniformTexelBufferOffsetAlignmentBytes@
 --     or, if
---     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT'::@uniformTexelBufferOffsetSingleTexelAlignment@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties'::@uniformTexelBufferOffsetSingleTexelAlignment@
 --     is 'Vulkan.Core10.FundamentalTypes.TRUE', the size of a texel of the
 --     requested @format@. If the size of a texel is a multiple of three
 --     bytes, then the size of a single component of @format@ is used
@@ -362,7 +362,7 @@
     -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE', the range from @offset@ to the
     -- end of the buffer is used. If 'Vulkan.Core10.APIConstants.WHOLE_SIZE' is
     -- used and the remaining size of the buffer is not a multiple of the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#texel-block-size texel block size>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#texel-block-size texel block size>
     -- of @format@, the nearest smaller multiple is used.
     range :: DeviceSize
   }
diff --git a/src/Vulkan/Core10/CommandBuffer.hs b/src/Vulkan/Core10/CommandBuffer.hs
--- a/src/Vulkan/Core10/CommandBuffer.hs
+++ b/src/Vulkan/Core10/CommandBuffer.hs
@@ -76,7 +76,7 @@
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_conditional_rendering (CommandBufferInheritanceConditionalRenderingInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_render_pass_transform (CommandBufferInheritanceRenderPassTransformInfoQCOM)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (CommandBufferInheritanceViewportScissorInfoNV)
 import Vulkan.Core10.Enums.CommandBufferLevel (CommandBufferLevel)
 import Vulkan.Core10.Enums.CommandBufferResetFlagBits (CommandBufferResetFlagBits(..))
@@ -149,7 +149,7 @@
 -- contents.
 --
 -- When command buffers are first allocated, they are in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
 --
 -- == Valid Usage (Implicit)
 --
@@ -239,15 +239,15 @@
 -- = Description
 --
 -- Any primary command buffer that is in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has any element of @pCommandBuffers@ recorded into it, becomes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkFreeCommandBuffers-pCommandBuffers-00047# All elements of
 --     @pCommandBuffers@ /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkFreeCommandBuffers-pCommandBuffers-00048# @pCommandBuffers@
 --     /must/ be a valid pointer to an array of @commandBufferCount@
@@ -319,14 +319,14 @@
 --
 -- -   #VUID-vkBeginCommandBuffer-commandBuffer-00049# @commandBuffer@
 --     /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or pending state>
 --
 -- -   #VUID-vkBeginCommandBuffer-commandBuffer-00050# If @commandBuffer@
 --     was allocated from a 'Vulkan.Core10.Handles.CommandPool' which did
 --     not have the
 --     'Vulkan.Core10.Enums.CommandPoolCreateFlagBits.COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT'
 --     flag set, @commandBuffer@ /must/ be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>
 --
 -- -   #VUID-vkBeginCommandBuffer-commandBuffer-00051# If @commandBuffer@
 --     is a secondary command buffer, the @pInheritanceInfo@ member of
@@ -426,28 +426,28 @@
 -- /must/ be reset.
 --
 -- The command buffer /must/ have been in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>,
 -- and is moved to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkEndCommandBuffer-commandBuffer-00059# @commandBuffer@ /must/
 --     be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
 --
 -- -   #VUID-vkEndCommandBuffer-commandBuffer-00060# If @commandBuffer@ is
 --     a primary command buffer, there /must/ not be an active render pass
 --     instance
 --
 -- -   #VUID-vkEndCommandBuffer-commandBuffer-00061# All queries made
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
 --     during the recording of @commandBuffer@ /must/ have been made
 --     inactive
 --
 -- -   #VUID-vkEndCommandBuffer-None-01978# Conditional rendering /must/
 --     not be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
 --
 -- -   #VUID-vkEndCommandBuffer-commandBuffer-01815# If @commandBuffer@ is
 --     a secondary command buffer, there /must/ not be an outstanding
@@ -517,15 +517,15 @@
 -- = Description
 --
 -- Any primary command buffer that is in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has @commandBuffer@ recorded into it, becomes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkResetCommandBuffer-commandBuffer-00045# @commandBuffer@
 --     /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkResetCommandBuffer-commandBuffer-00046# @commandBuffer@
 --     /must/ have been allocated from a pool that was created with the
@@ -567,9 +567,9 @@
                     . (MonadIO io)
                    => -- | @commandBuffer@ is the command buffer to reset. The command buffer /can/
                       -- be in any state other than
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending>,
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending>,
                       -- and is moved into the
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
                       CommandBuffer
                    -> -- | @flags@ is a bitmask of
                       -- 'Vulkan.Core10.Enums.CommandBufferResetFlagBits.CommandBufferResetFlagBits'
@@ -667,30 +667,30 @@
 --
 -- If the 'Vulkan.Core10.Handles.CommandBuffer' will not be executed within
 -- a render pass instance, or if the render pass instance was begun with
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 -- @renderPass@, @subpass@, and @framebuffer@ are ignored.
 --
 -- == Valid Usage
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
 --     feature is not enabled, @occlusionQueryEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-queryFlags-00057# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
 --     feature is enabled, @queryFlags@ /must/ be a valid combination of
 --     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
 --     values
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-queryFlags-02788# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
 --     feature is not enabled, @queryFlags@ /must/ be @0@
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>
 --     feature is enabled, @pipelineStatistics@ /must/ be a valid
 --     combination of
 --     'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'
@@ -698,7 +698,7 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>
 --     feature is not enabled, @pipelineStatistics@ /must/ be @0@
 --
 -- == Valid Usage (Implicit)
@@ -712,7 +712,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD',
 --     'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
 --     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
 --     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX'
@@ -739,7 +739,7 @@
     next :: Chain es
   , -- | @renderPass@ is a 'Vulkan.Core10.Handles.RenderPass' object defining
     -- which render passes the 'Vulkan.Core10.Handles.CommandBuffer' will be
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility compatible>
     -- with and /can/ be executed within.
     renderPass :: RenderPass
   , -- | @subpass@ is the index of the subpass within the render pass instance
@@ -799,7 +799,7 @@
   extends _ f
     | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
     | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f
-    | Just Refl <- eqT @e @CommandBufferInheritanceRenderingInfoKHR = Just f
+    | Just Refl <- eqT @e @CommandBufferInheritanceRenderingInfo = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceViewportScissorInfoNV = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceRenderPassTransformInfoQCOM = Just f
     | Just Refl <- eqT @e @CommandBufferInheritanceConditionalRenderingInfoEXT = Just f
@@ -882,7 +882,7 @@
 --     and the @renderPass@ member of @pInheritanceInfo@ is
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @pNext@ chain of
 --     @pInheritanceInfo@ /must/ include a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'
 --     structure
 --
 -- -   #VUID-VkCommandBufferBeginInfo-flags-06003# If @flags@ contains
@@ -895,7 +895,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, the @colorAttachmentCount@ member of that structure
 --     /must/ be equal to the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@colorAttachmentCount@
 --
 -- == Valid Usage (Implicit)
 --
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
@@ -249,13210 +249,13212 @@
 -- -   The pipeline bound to
 --     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE'
 --     controls the behavior of all
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatch dispatching commands>.
---
--- -   The pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     controls the behavior of all
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing drawing commands>.
---
--- -   The pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'
---     controls the behavior of
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR' and
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'.
---
--- -   The pipeline bound to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'
---     controls the behavior of
---     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.cmdSubpassShadingHUAWEI'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00777# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00778# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00779# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
---     @pipeline@ /must/ be a compute pipeline
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00780# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
---     @pipeline@ /must/ be a graphics pipeline
---
--- -   #VUID-vkCmdBindPipeline-pipeline-00781# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRate variable multisample rate>
---     feature is not supported, @pipeline@ is a graphics pipeline, the
---     current subpass
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments uses no attachments>,
---     and this is not the first call to this function with a graphics
---     pipeline after transitioning to the current subpass, then the sample
---     count specified by this pipeline /must/ match that set in the
---     previous pipeline
---
--- -   #VUID-vkCmdBindPipeline-variableSampleLocations-01525# If
---     'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', and @pipeline@ is a
---     graphics pipeline created with a
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
---     structure having its @sampleLocationsEnable@ member set to
---     'Vulkan.Core10.FundamentalTypes.TRUE' but without
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
---     enabled then the current render pass instance /must/ have been begun
---     by specifying a
---     'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT'
---     structure whose @pPostSubpassSampleLocations@ member contains an
---     element with a @subpassIndex@ matching the current subpass index and
---     the @sampleLocationsInfo@ member of that element /must/ match the
---     @sampleLocationsInfo@ specified in
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
---     when the pipeline was created
---
--- -   #VUID-vkCmdBindPipeline-None-02323# This command /must/ not be
---     recorded when transform feedback is active
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-02391# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR',
---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-02392# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR',
---     @pipeline@ /must/ be a ray tracing pipeline
---
--- -   #VUID-vkCmdBindPipeline-pipeline-03382# @pipeline@ /must/ not have
---     been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
---     set
---
--- -   #VUID-vkCmdBindPipeline-commandBuffer-04808# If @commandBuffer@ is a
---     secondary command buffer with
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
---     enabled and @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
---     then the @pipeline@ /must/ have been created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT', and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' enabled
---
--- -   #VUID-vkCmdBindPipeline-commandBuffer-04809# If @commandBuffer@ is a
---     secondary command buffer with
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
---     enabled and @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     and @pipeline@ was created with
---     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
---     structure and its @discardRectangleCount@ member is not @0@, then
---     the pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
---     enabled
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04881# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>
---     limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then pipeline’s
---     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT'::@provokingVertexMode@
---     /must/ be the same as that of any other pipelines previously bound
---     to this bind point within the current render pass instance,
---     including any pipeline already bound when beginning the render pass
---     instance
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04949# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',
---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04950# If
---     @pipelineBindPoint@ is
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',
---     @pipeline@ /must/ be a subpass shading pipeline
---
--- -   #VUID-vkCmdBindPipeline-pipeline-06195# If @pipeline@ is a graphics
---     pipeline, this command has been called inside a render pass instance
---     started with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     and commands using the previously bound graphics pipeline have been
---     recorded within the render pass instance, then the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
---     specified by this pipeline /must/ match that set in the previous
---     pipeline
---
--- -   #VUID-vkCmdBindPipeline-pipeline-06196# If @pipeline@ is a graphics
---     pipeline, this command has been called inside a render pass instance
---     started with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     and commands using the previously bound graphics pipeline have been
---     recorded within the render pass instance, then the elements of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
---     specified by this pipeline /must/ match that set in the previous
---     pipeline
---
--- -   #VUID-vkCmdBindPipeline-pipeline-06197# If @pipeline@ is a graphics
---     pipeline, this command has been called inside a render pass instance
---     started with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     and commands using the previously bound graphics pipeline have been
---     recorded within the render pass instance, then the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
---     specified by this pipeline /must/ match that set in the previous
---     pipeline
---
--- -   #VUID-vkCmdBindPipeline-pipeline-06194# If @pipeline@ is a graphics
---     pipeline, this command has been called inside a render pass instance
---     started with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     and commands using the previously bound graphics pipeline have been
---     recorded within the render pass instance, then the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
---     specified by this pipeline /must/ match that set in the previous
---     pipeline
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindPipeline-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-parameter#
---     @pipelineBindPoint@ /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
---
--- -   #VUID-vkCmdBindPipeline-pipeline-parameter# @pipeline@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Pipeline' handle
---
--- -   #VUID-vkCmdBindPipeline-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-vkCmdBindPipeline-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdBindPipeline-commonparent# Both of @commandBuffer@, and
---     @pipeline@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Pipeline',
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'
-cmdBindPipeline :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer that the pipeline will be bound
-                   -- to.
-                   CommandBuffer
-                -> -- | @pipelineBindPoint@ is a
-                   -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
-                   -- specifying to which bind point the pipeline is bound. Binding one does
-                   -- not disturb the others.
-                   PipelineBindPoint
-                -> -- | @pipeline@ is the pipeline to be bound.
-                   Pipeline
-                -> io ()
-cmdBindPipeline commandBuffer pipelineBindPoint pipeline = liftIO $ do
-  let vkCmdBindPipelinePtr = pVkCmdBindPipeline (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdBindPipelinePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindPipeline is null" Nothing Nothing
-  let vkCmdBindPipeline' = mkVkCmdBindPipeline vkCmdBindPipelinePtr
-  traceAroundEvent "vkCmdBindPipeline" (vkCmdBindPipeline' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (pipeline))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetViewport
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()
-
--- | vkCmdSetViewport - Set the viewport dynamically for a command buffer
---
--- = Description
---
--- This command sets the viewport transformation parameters state for
--- subsequent drawing commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pViewports@
--- values used to create the currently active pipeline.
---
--- The viewport parameters taken from element i of @pViewports@ replace the
--- current state for the viewport index @firstViewport@ + i, for i in [0,
--- @viewportCount@).
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetViewport-firstViewport-01223# The sum of
---     @firstViewport@ and @viewportCount@ /must/ be between @1@ and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
---     inclusive
---
--- -   #VUID-vkCmdSetViewport-firstViewport-01224# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
---     feature is not enabled, @firstViewport@ /must/ be @0@
---
--- -   #VUID-vkCmdSetViewport-viewportCount-01225# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
---     feature is not enabled, @viewportCount@ /must/ be @1@
---
--- -   #VUID-vkCmdSetViewport-commandBuffer-04821# @commandBuffer@ /must/
---     not have
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
---     enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetViewport-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetViewport-pViewports-parameter# @pViewports@ /must/ be
---     a valid pointer to an array of @viewportCount@ valid
---     'Vulkan.Core10.Pipeline.Viewport' structures
---
--- -   #VUID-vkCmdSetViewport-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-vkCmdSetViewport-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdSetViewport-viewportCount-arraylength# @viewportCount@
---     /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Pipeline.Viewport'
-cmdSetViewport :: forall io
-                . (MonadIO io)
-               => -- | @commandBuffer@ is the command buffer into which the command will be
-                  -- recorded.
-                  CommandBuffer
-               -> -- | @firstViewport@ is the index of the first viewport whose parameters are
-                  -- updated by the command.
-                  ("firstViewport" ::: Word32)
-               -> -- | @pViewports@ is a pointer to an array of
-                  -- 'Vulkan.Core10.Pipeline.Viewport' structures specifying viewport
-                  -- parameters.
-                  ("viewports" ::: Vector Viewport)
-               -> io ()
-cmdSetViewport commandBuffer firstViewport viewports = liftIO . evalContT $ do
-  let vkCmdSetViewportPtr = pVkCmdSetViewport (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetViewportPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewport is null" Nothing Nothing
-  let vkCmdSetViewport' = mkVkCmdSetViewport vkCmdSetViewportPtr
-  pPViewports <- ContT $ allocaBytes @Viewport ((Data.Vector.length (viewports)) * 24)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)
-  lift $ traceAroundEvent "vkCmdSetViewport" (vkCmdSetViewport' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetScissor
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()
-
--- | vkCmdSetScissor - Set scissor rectangles dynamically for a command
--- buffer
---
--- = Description
---
--- The scissor rectangles taken from element i of @pScissors@ replace the
--- current state for the scissor index @firstScissor@ + i, for i in [0,
--- @scissorCount@).
---
--- This command sets the scissor rectangles for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pScissors@
--- values used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetScissor-firstScissor-00592# The sum of @firstScissor@
---     and @scissorCount@ /must/ be between @1@ and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
---     inclusive
---
--- -   #VUID-vkCmdSetScissor-firstScissor-00593# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
---     feature is not enabled, @firstScissor@ /must/ be @0@
---
--- -   #VUID-vkCmdSetScissor-scissorCount-00594# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
---     feature is not enabled, @scissorCount@ /must/ be @1@
---
--- -   #VUID-vkCmdSetScissor-x-00595# The @x@ and @y@ members of @offset@
---     member of any element of @pScissors@ /must/ be greater than or equal
---     to @0@
---
--- -   #VUID-vkCmdSetScissor-offset-00596# Evaluation of (@offset.x@ +
---     @extent.width@) /must/ not cause a signed integer addition overflow
---     for any element of @pScissors@
---
--- -   #VUID-vkCmdSetScissor-offset-00597# Evaluation of (@offset.y@ +
---     @extent.height@) /must/ not cause a signed integer addition overflow
---     for any element of @pScissors@
---
--- -   #VUID-vkCmdSetScissor-viewportScissor2D-04789# If this command is
---     recorded in a secondary command buffer with
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
---     enabled, then this function /must/ not be called
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetScissor-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetScissor-pScissors-parameter# @pScissors@ /must/ be a
---     valid pointer to an array of @scissorCount@
---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
---
--- -   #VUID-vkCmdSetScissor-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-vkCmdSetScissor-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdSetScissor-scissorCount-arraylength# @scissorCount@
---     /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.Rect2D'
-cmdSetScissor :: forall io
-               . (MonadIO io)
-              => -- | @commandBuffer@ is the command buffer into which the command will be
-                 -- recorded.
-                 CommandBuffer
-              -> -- | @firstScissor@ is the index of the first scissor whose state is updated
-                 -- by the command.
-                 ("firstScissor" ::: Word32)
-              -> -- | @pScissors@ is a pointer to an array of
-                 -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining scissor
-                 -- rectangles.
-                 ("scissors" ::: Vector Rect2D)
-              -> io ()
-cmdSetScissor commandBuffer firstScissor scissors = liftIO . evalContT $ do
-  let vkCmdSetScissorPtr = pVkCmdSetScissor (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetScissorPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissor is null" Nothing Nothing
-  let vkCmdSetScissor' = mkVkCmdSetScissor vkCmdSetScissorPtr
-  pPScissors <- ContT $ allocaBytes @Rect2D ((Data.Vector.length (scissors)) * 16)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)
-  lift $ traceAroundEvent "vkCmdSetScissor" (vkCmdSetScissor' (commandBufferHandle (commandBuffer)) (firstScissor) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetLineWidth
-  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> IO ()
-
--- | vkCmdSetLineWidth - Set line width dynamically for a command buffer
---
--- = Description
---
--- This command sets the line width for subsequent drawing commands when
--- the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@lineWidth@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetLineWidth-lineWidth-00788# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-wideLines wide lines>
---     feature is not enabled, @lineWidth@ /must/ be @1.0@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetLineWidth-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetLineWidth-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-vkCmdSetLineWidth-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetLineWidth :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command will be
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @lineWidth@ is the width of rasterized line segments.
-                   ("lineWidth" ::: Float)
-                -> io ()
-cmdSetLineWidth commandBuffer lineWidth = liftIO $ do
-  let vkCmdSetLineWidthPtr = pVkCmdSetLineWidth (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetLineWidthPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetLineWidth is null" Nothing Nothing
-  let vkCmdSetLineWidth' = mkVkCmdSetLineWidth vkCmdSetLineWidthPtr
-  traceAroundEvent "vkCmdSetLineWidth" (vkCmdSetLineWidth' (commandBufferHandle (commandBuffer)) (CFloat (lineWidth)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDepthBias
-  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()
-
--- | vkCmdSetDepthBias - Set depth bias factors and clamp dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the depth bias parameters for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the corresponding
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@depthBiasConstantFactor@,
--- @depthBiasClamp@, and @depthBiasSlopeFactor@ values used to create the
--- currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDepthBias-depthBiasClamp-00790# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBiasClamp depth bias clamping>
---     feature is not enabled, @depthBiasClamp@ /must/ be @0.0@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDepthBias-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDepthBias-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-vkCmdSetDepthBias-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetDepthBias :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command will be
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant
-                   -- depth value added to each fragment.
-                   ("depthBiasConstantFactor" ::: Float)
-                -> -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.
-                   ("depthBiasClamp" ::: Float)
-                -> -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope
-                   -- in depth bias calculations.
-                   ("depthBiasSlopeFactor" ::: Float)
-                -> io ()
-cmdSetDepthBias commandBuffer depthBiasConstantFactor depthBiasClamp depthBiasSlopeFactor = liftIO $ do
-  let vkCmdSetDepthBiasPtr = pVkCmdSetDepthBias (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetDepthBiasPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBias is null" Nothing Nothing
-  let vkCmdSetDepthBias' = mkVkCmdSetDepthBias vkCmdSetDepthBiasPtr
-  traceAroundEvent "vkCmdSetDepthBias" (vkCmdSetDepthBias' (commandBufferHandle (commandBuffer)) (CFloat (depthBiasConstantFactor)) (CFloat (depthBiasClamp)) (CFloat (depthBiasSlopeFactor)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetBlendConstants
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()
-
--- | vkCmdSetBlendConstants - Set the values of blend constants
---
--- = Description
---
--- This command sets blend constants for subsequent drawing commands when
--- the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@blendConstants@
--- values used to create the currently active pipeline.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetBlendConstants-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetBlendConstants-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-vkCmdSetBlendConstants-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetBlendConstants :: forall io
-                      . (MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer into which the command will be
-                        -- recorded.
-                        CommandBuffer
-                     -> -- | @blendConstants@ is a pointer to an array of four values specifying the
-                        -- Rc, Gc, Bc, and Ac components of the blend constant color used in
-                        -- blending, depending on the
-                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.
-                        ("blendConstants" ::: (Float, Float, Float, Float))
-                     -> io ()
-cmdSetBlendConstants commandBuffer blendConstants = liftIO . evalContT $ do
-  let vkCmdSetBlendConstantsPtr = pVkCmdSetBlendConstants (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetBlendConstantsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetBlendConstants is null" Nothing Nothing
-  let vkCmdSetBlendConstants' = mkVkCmdSetBlendConstants vkCmdSetBlendConstantsPtr
-  pBlendConstants <- ContT $ allocaBytes @(FixedArray 4 CFloat) 16
-  let pBlendConstants' = lowerArrayPtr pBlendConstants
-  lift $ case (blendConstants) of
-    (e0, e1, e2, e3) -> do
-      poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))
-      poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
-      poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
-      poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
-  lift $ traceAroundEvent "vkCmdSetBlendConstants" (vkCmdSetBlendConstants' (commandBufferHandle (commandBuffer)) (pBlendConstants))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDepthBounds
-  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()
-
--- | vkCmdSetDepthBounds - Set depth bounds range dynamically for a command
--- buffer
---
--- = Description
---
--- This command sets the depth bounds range for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@minDepthBounds@
--- and
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@maxDepthBounds@
--- values used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDepthBounds-minDepthBounds-00600# Unless the
---     @VK_EXT_depth_range_unrestricted@ extension is enabled
---     @minDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive
---
--- -   #VUID-vkCmdSetDepthBounds-maxDepthBounds-00601# Unless the
---     @VK_EXT_depth_range_unrestricted@ extension is enabled
---     @maxDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDepthBounds-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDepthBounds-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-vkCmdSetDepthBounds-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetDepthBounds :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which the command will be
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @minDepthBounds@ is the minimum depth bound.
-                     ("minDepthBounds" ::: Float)
-                  -> -- | @maxDepthBounds@ is the maximum depth bound.
-                     ("maxDepthBounds" ::: Float)
-                  -> io ()
-cmdSetDepthBounds commandBuffer minDepthBounds maxDepthBounds = liftIO $ do
-  let vkCmdSetDepthBoundsPtr = pVkCmdSetDepthBounds (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetDepthBoundsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBounds is null" Nothing Nothing
-  let vkCmdSetDepthBounds' = mkVkCmdSetDepthBounds vkCmdSetDepthBoundsPtr
-  traceAroundEvent "vkCmdSetDepthBounds" (vkCmdSetDepthBounds' (commandBufferHandle (commandBuffer)) (CFloat (minDepthBounds)) (CFloat (maxDepthBounds)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetStencilCompareMask
-  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()
-
--- | vkCmdSetStencilCompareMask - Set stencil compare mask dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the stencil compare mask for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@compareMask@
--- value used to create the currently active pipeline, for both front and
--- back faces.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetStencilCompareMask-faceMask-parameter# @faceMask@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
---
--- -   #VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask#
---     @faceMask@ /must/ not be @0@
---
--- -   #VUID-vkCmdSetStencilCompareMask-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-vkCmdSetStencilCompareMask-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'
-cmdSetStencilCompareMask :: forall io
-                          . (MonadIO io)
-                         => -- | @commandBuffer@ is the command buffer into which the command will be
-                            -- recorded.
-                            CommandBuffer
-                         -> -- | @faceMask@ is a bitmask of
-                            -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
-                            -- the set of stencil state for which to update the compare mask.
-                            ("faceMask" ::: StencilFaceFlags)
-                         -> -- | @compareMask@ is the new value to use as the stencil compare mask.
-                            ("compareMask" ::: Word32)
-                         -> io ()
-cmdSetStencilCompareMask commandBuffer faceMask compareMask = liftIO $ do
-  let vkCmdSetStencilCompareMaskPtr = pVkCmdSetStencilCompareMask (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetStencilCompareMaskPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilCompareMask is null" Nothing Nothing
-  let vkCmdSetStencilCompareMask' = mkVkCmdSetStencilCompareMask vkCmdSetStencilCompareMaskPtr
-  traceAroundEvent "vkCmdSetStencilCompareMask" (vkCmdSetStencilCompareMask' (commandBufferHandle (commandBuffer)) (faceMask) (compareMask))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetStencilWriteMask
-  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()
-
--- | vkCmdSetStencilWriteMask - Set stencil write mask dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the stencil write mask for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' set
--- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@writeMask@
--- value used to create the currently active pipeline, for both front and
--- back faces.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetStencilWriteMask-faceMask-parameter# @faceMask@ /must/
---     be a valid combination of
---     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
---
--- -   #VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask# @faceMask@
---     /must/ not be @0@
---
--- -   #VUID-vkCmdSetStencilWriteMask-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-vkCmdSetStencilWriteMask-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'
-cmdSetStencilWriteMask :: forall io
-                        . (MonadIO io)
-                       => -- | @commandBuffer@ is the command buffer into which the command will be
-                          -- recorded.
-                          CommandBuffer
-                       -> -- | @faceMask@ is a bitmask of
-                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
-                          -- the set of stencil state for which to update the write mask, as
-                          -- described above for 'cmdSetStencilCompareMask'.
-                          ("faceMask" ::: StencilFaceFlags)
-                       -> -- | @writeMask@ is the new value to use as the stencil write mask.
-                          ("writeMask" ::: Word32)
-                       -> io ()
-cmdSetStencilWriteMask commandBuffer faceMask writeMask = liftIO $ do
-  let vkCmdSetStencilWriteMaskPtr = pVkCmdSetStencilWriteMask (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetStencilWriteMaskPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilWriteMask is null" Nothing Nothing
-  let vkCmdSetStencilWriteMask' = mkVkCmdSetStencilWriteMask vkCmdSetStencilWriteMaskPtr
-  traceAroundEvent "vkCmdSetStencilWriteMask" (vkCmdSetStencilWriteMask' (commandBufferHandle (commandBuffer)) (faceMask) (writeMask))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetStencilReference
-  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()
-
--- | vkCmdSetStencilReference - Set stencil reference value dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the stencil reference value for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' set
--- in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@reference@
--- value used to create the currently active pipeline, for both front and
--- back faces.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetStencilReference-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetStencilReference-faceMask-parameter# @faceMask@ /must/
---     be a valid combination of
---     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
---
--- -   #VUID-vkCmdSetStencilReference-faceMask-requiredbitmask# @faceMask@
---     /must/ not be @0@
---
--- -   #VUID-vkCmdSetStencilReference-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-vkCmdSetStencilReference-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'
-cmdSetStencilReference :: forall io
-                        . (MonadIO io)
-                       => -- | @commandBuffer@ is the command buffer into which the command will be
-                          -- recorded.
-                          CommandBuffer
-                       -> -- | @faceMask@ is a bitmask of
-                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
-                          -- the set of stencil state for which to update the reference value, as
-                          -- described above for 'cmdSetStencilCompareMask'.
-                          ("faceMask" ::: StencilFaceFlags)
-                       -> -- | @reference@ is the new value to use as the stencil reference value.
-                          ("reference" ::: Word32)
-                       -> io ()
-cmdSetStencilReference commandBuffer faceMask reference = liftIO $ do
-  let vkCmdSetStencilReferencePtr = pVkCmdSetStencilReference (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetStencilReferencePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilReference is null" Nothing Nothing
-  let vkCmdSetStencilReference' = mkVkCmdSetStencilReference vkCmdSetStencilReferencePtr
-  traceAroundEvent "vkCmdSetStencilReference" (vkCmdSetStencilReference' (commandBufferHandle (commandBuffer)) (faceMask) (reference))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindDescriptorSets
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()
-
--- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer
---
--- = Description
---
--- 'cmdBindDescriptorSets' causes the sets numbered [@firstSet@..
--- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in
--- @pDescriptorSets@[0..descriptorSetCount-1] for subsequent
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>
--- set by @pipelineBindPoint@. Any bindings that were previously applied
--- via these sets 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
--- either a different set is bound to the same set number, or the set is
--- disturbed as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
---
--- A compatible descriptor set /must/ be bound for all set numbers that any
--- shaders in a pipeline access, at the time that a drawing or dispatching
--- command is recorded to execute using that pipeline. However, if none of
--- the shaders in a pipeline statically use any bindings with a particular
--- set number, then no descriptor set need be bound for that set number,
--- even if the pipeline layout includes a non-trivial descriptor set layout
--- for that set number.
---
--- If any of the sets being bound include dynamic uniform or storage
--- buffers, then @pDynamicOffsets@ includes one element for each array
--- element in each dynamic descriptor type binding in each set. Values are
--- taken from @pDynamicOffsets@ in an order such that all entries for set N
--- come before set N+1; within a set, entries are ordered by the binding
--- numbers in the descriptor set layouts; and within a binding array,
--- elements are in order. @dynamicOffsetCount@ /must/ equal the total
--- number of dynamic descriptors in the sets being bound.
---
--- The effective offset used for dynamic uniform and storage buffer
--- bindings is the sum of the relative offset taken from @pDynamicOffsets@,
--- and the base address of the buffer plus base offset in the descriptor
--- set. The range of the dynamic uniform and storage buffer bindings is the
--- buffer range as specified in the descriptor set.
---
--- Each of the @pDescriptorSets@ /must/ be compatible with the pipeline
--- layout specified by @layout@. The layout used to program the bindings
--- /must/ also be compatible with the pipeline used in subsequent
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>
--- with that pipeline type, as defined in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>
--- section.
---
--- The descriptor set contents bound by a call to 'cmdBindDescriptorSets'
--- /may/ be consumed at the following times:
---
--- -   For descriptor bindings created with the
---     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
---     bit set, the contents /may/ be consumed when the command buffer is
---     submitted to a queue, or during shader execution of the resulting
---     draws and dispatches, or any time in between. Otherwise,
---
--- -   during host execution of the command, or during shader execution of
---     the resulting draws and dispatches, or any time in between.
---
--- Thus, the contents of a descriptor set binding /must/ not be altered
--- (overwritten by an update command, or freed) between the first point in
--- time that it /may/ be consumed, and when the command completes executing
--- on the queue.
---
--- The contents of @pDynamicOffsets@ are consumed immediately during
--- execution of 'cmdBindDescriptorSets'. Once all pending uses have
--- completed, it is legal to update and reuse a descriptor set.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358# Each element of
---     @pDescriptorSets@ /must/ have been allocated with a
---     'Vulkan.Core10.Handles.DescriptorSetLayout' that matches (is the
---     same as, or identically defined as) the
---     'Vulkan.Core10.Handles.DescriptorSetLayout' at set /n/ in @layout@,
---     where /n/ is the sum of @firstSet@ and the index into
---     @pDescriptorSets@
---
--- -   #VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359#
---     @dynamicOffsetCount@ /must/ be equal to the total number of dynamic
---     descriptors in @pDescriptorSets@
---
--- -   #VUID-vkCmdBindDescriptorSets-firstSet-00360# The sum of @firstSet@
---     and @descriptorSetCount@ /must/ be less than or equal to
---     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
---     provided when @layout@ was created
---
--- -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361#
---     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s
---     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family
---
--- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971# Each element of
---     @pDynamicOffsets@ which corresponds to a descriptor binding with
---     type
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
---     /must/ be a multiple of
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minUniformBufferOffsetAlignment@
---
--- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972# Each element of
---     @pDynamicOffsets@ which corresponds to a descriptor binding with
---     type
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
---     /must/ be a multiple of
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minStorageBufferOffsetAlignment@
---
--- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979# For each
---     dynamic uniform or storage buffer binding in @pDescriptorSets@, the
---     sum of the effective offset, as defined above, and the range of the
---     binding /must/ be less than or equal to the size of the buffer
---
--- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616# Each element of
---     @pDescriptorSets@ /must/ not have been allocated from a
---     'Vulkan.Core10.Handles.DescriptorPool' with the
---     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'
---     flag set
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindDescriptorSets-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter#
---     @pipelineBindPoint@ /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
---
--- -   #VUID-vkCmdBindDescriptorSets-layout-parameter# @layout@ /must/ be a
---     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter#
---     @pDescriptorSets@ /must/ be a valid pointer to an array of
---     @descriptorSetCount@ valid 'Vulkan.Core10.Handles.DescriptorSet'
---     handles
---
--- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter# If
---     @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a valid
---     pointer to an array of @dynamicOffsetCount@ @uint32_t@ values
---
--- -   #VUID-vkCmdBindDescriptorSets-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-vkCmdBindDescriptorSets-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength#
---     @descriptorSetCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdBindDescriptorSets-commonparent# Each of @commandBuffer@,
---     @layout@, and the elements of @pDescriptorSets@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Handles.DescriptorSet',
--- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
--- 'Vulkan.Core10.Handles.PipelineLayout'
-cmdBindDescriptorSets :: forall io
-                       . (MonadIO io)
-                      => -- | @commandBuffer@ is the command buffer that the descriptor sets will be
-                         -- bound to.
-                         CommandBuffer
-                      -> -- | @pipelineBindPoint@ is a
-                         -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' indicating the
-                         -- type of the pipeline that will use the descriptors. There is a separate
-                         -- set of bind points for each pipeline type, so binding one does not
-                         -- disturb the others.
-                         PipelineBindPoint
-                      -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
-                         -- program the bindings.
-                         PipelineLayout
-                      -> -- | @firstSet@ is the set number of the first descriptor set to be bound.
-                         ("firstSet" ::: Word32)
-                      -> -- | @pDescriptorSets@ is a pointer to an array of handles to
-                         -- 'Vulkan.Core10.Handles.DescriptorSet' objects describing the descriptor
-                         -- sets to bind to.
-                         ("descriptorSets" ::: Vector DescriptorSet)
-                      -> -- | @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values
-                         -- specifying dynamic offsets.
-                         ("dynamicOffsets" ::: Vector Word32)
-                      -> io ()
-cmdBindDescriptorSets commandBuffer pipelineBindPoint layout firstSet descriptorSets dynamicOffsets = liftIO . evalContT $ do
-  let vkCmdBindDescriptorSetsPtr = pVkCmdBindDescriptorSets (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBindDescriptorSetsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorSets is null" Nothing Nothing
-  let vkCmdBindDescriptorSets' = mkVkCmdBindDescriptorSets vkCmdBindDescriptorSetsPtr
-  pPDescriptorSets <- ContT $ allocaBytes @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)
-  pPDynamicOffsets <- ContT $ allocaBytes @Word32 ((Data.Vector.length (dynamicOffsets)) * 4)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicOffsets `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (dynamicOffsets)
-  lift $ traceAroundEvent "vkCmdBindDescriptorSets" (vkCmdBindDescriptorSets' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (layout) (firstSet) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32)) (pPDescriptorSets) ((fromIntegral (Data.Vector.length $ (dynamicOffsets)) :: Word32)) (pPDynamicOffsets))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindIndexBuffer
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()
-
--- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindIndexBuffer-offset-00431# @offset@ /must/ be less
---     than the size of @buffer@
---
--- -   #VUID-vkCmdBindIndexBuffer-offset-00432# The sum of @offset@ and the
---     address of the range of 'Vulkan.Core10.Handles.DeviceMemory' object
---     that is backing @buffer@, /must/ be a multiple of the type indicated
---     by @indexType@
---
--- -   #VUID-vkCmdBindIndexBuffer-buffer-00433# @buffer@ /must/ have been
---     created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdBindIndexBuffer-buffer-00434# If @buffer@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBindIndexBuffer-indexType-02507# @indexType@ /must/ not
---     be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
---
--- -   #VUID-vkCmdBindIndexBuffer-indexType-02765# If @indexType@ is
---     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindIndexBuffer-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindIndexBuffer-buffer-parameter# @buffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdBindIndexBuffer-indexType-parameter# @indexType@ /must/
---     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value
---
--- -   #VUID-vkCmdBindIndexBuffer-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-vkCmdBindIndexBuffer-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBindIndexBuffer-commonparent# Both of @buffer@, and
---     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.IndexType.IndexType'
-cmdBindIndexBuffer :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer into which the command is
-                      -- recorded.
-                      CommandBuffer
-                   -> -- | @buffer@ is the buffer being bound.
-                      Buffer
-                   -> -- | @offset@ is the starting offset in bytes within @buffer@ used in index
-                      -- buffer address calculations.
-                      ("offset" ::: DeviceSize)
-                   -> -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
-                      -- specifying the size of the indices.
-                      IndexType
-                   -> io ()
-cmdBindIndexBuffer commandBuffer buffer offset indexType = liftIO $ do
-  let vkCmdBindIndexBufferPtr = pVkCmdBindIndexBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdBindIndexBufferPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindIndexBuffer is null" Nothing Nothing
-  let vkCmdBindIndexBuffer' = mkVkCmdBindIndexBuffer vkCmdBindIndexBufferPtr
-  traceAroundEvent "vkCmdBindIndexBuffer" (vkCmdBindIndexBuffer' (commandBufferHandle (commandBuffer)) (buffer) (offset) (indexType))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindVertexBuffers
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
-
--- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer
---
--- = Description
---
--- The values taken from elements i of @pBuffers@ and @pOffsets@ replace
--- the current state for the vertex input binding @firstBinding@ + i, for i
--- in [0, @bindingCount@). The vertex input binding is updated to start at
--- the offset indicated by @pOffsets@[i] from the start of the buffer
--- @pBuffers@[i]. All vertex input attributes that use each of these
--- bindings will use these updated addresses in their address calculations
--- for subsequent drawing commands. If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
--- feature is enabled, elements of @pBuffers@ /can/ be
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by the
--- vertex shader. If a vertex input attribute is bound to a vertex input
--- binding that is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the values
--- taken from memory are considered to be zero, and missing G, B, or A
--- components are
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindVertexBuffers-firstBinding-00624# @firstBinding@
---     /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-vkCmdBindVertexBuffers-firstBinding-00625# The sum of
---     @firstBinding@ and @bindingCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-vkCmdBindVertexBuffers-pOffsets-00626# All elements of
---     @pOffsets@ /must/ be less than the size of the corresponding element
---     in @pBuffers@
---
--- -   #VUID-vkCmdBindVertexBuffers-pBuffers-00627# All elements of
---     @pBuffers@ /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdBindVertexBuffers-pBuffers-00628# Each element of
---     @pBuffers@ that is non-sparse /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBindVertexBuffers-pBuffers-04001# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is not enabled, all elements of @pBuffers@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBindVertexBuffers-pBuffers-04002# If an element of
---     @pBuffers@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of @pOffsets@ /must/ be zero
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindVertexBuffers-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindVertexBuffers-pBuffers-parameter# @pBuffers@ /must/
---     be a valid pointer to an array of @bindingCount@ valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     'Vulkan.Core10.Handles.Buffer' handles
---
--- -   #VUID-vkCmdBindVertexBuffers-pOffsets-parameter# @pOffsets@ /must/
---     be a valid pointer to an array of @bindingCount@
---     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-vkCmdBindVertexBuffers-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-vkCmdBindVertexBuffers-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBindVertexBuffers-bindingCount-arraylength#
---     @bindingCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdBindVertexBuffers-commonparent# Both of @commandBuffer@,
---     and the elements of @pBuffers@ that are valid handles of non-ignored
---     parameters /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdBindVertexBuffers :: forall io
-                      . (MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer into which the command is
-                        -- recorded.
-                        CommandBuffer
-                     -> -- | @firstBinding@ is the index of the first vertex input binding whose
-                        -- state is updated by the command.
-                        ("firstBinding" ::: Word32)
-                     -> -- | @pBuffers@ is a pointer to an array of buffer handles.
-                        ("buffers" ::: Vector Buffer)
-                     -> -- | @pOffsets@ is a pointer to an array of buffer offsets.
-                        ("offsets" ::: Vector DeviceSize)
-                     -> io ()
-cmdBindVertexBuffers commandBuffer firstBinding buffers offsets = liftIO . evalContT $ do
-  let vkCmdBindVertexBuffersPtr = pVkCmdBindVertexBuffers (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBindVertexBuffersPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindVertexBuffers is null" Nothing Nothing
-  let vkCmdBindVertexBuffers' = mkVkCmdBindVertexBuffers vkCmdBindVertexBuffersPtr
-  let pBuffersLength = Data.Vector.length $ (buffers)
-  lift $ unless ((Data.Vector.length $ (offsets)) == pBuffersLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing
-  pPBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (buffers)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)
-  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 "vkCmdBindVertexBuffers" (vkCmdBindVertexBuffers' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDraw
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDraw - Draw primitives
---
--- = Description
---
--- When the command is executed, primitives are assembled using the current
--- primitive topology and @vertexCount@ consecutive vertex indices with the
--- first @vertexIndex@ value equal to @firstVertex@. The primitives are
--- drawn @instanceCount@ times with @instanceIndex@ starting with
--- @firstInstance@ and increasing sequentially for each instance. The
--- assembled primitives execute the bound graphics pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDraw-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDraw-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
---     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDraw-None-06479# If a 'Vulkan.Core10.Handles.ImageView'
---     is sampled with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
---     the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---
--- -   #VUID-vkCmdDraw-None-02691# If a 'Vulkan.Core10.Handles.ImageView'
---     is accessed using atomic operations as a result of this command,
---     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDraw-None-02692# If a 'Vulkan.Core10.Handles.ImageView'
---     is sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDraw-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering, as specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDraw-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
---     reduction mode of either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     as a result of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering together with minmax filtering, as
---     specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDraw-flags-02696# Any 'Vulkan.Core10.Handles.Image'
---     created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
---     containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
---     sampled as a result of this command /must/ only be sampled using a
---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
---
--- -   #VUID-vkCmdDraw-OpTypeImage-06423# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being written as a storage image
---     or storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDraw-OpTypeImage-06424# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
---     storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDraw-None-02697# For each set /n/ that is statically used
---     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point used by this command, a descriptor set /must/ have been bound
---     to /n/ at the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
---     feature is not enabled, then for each push constant that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a push constant value
---     /must/ have been set for the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
---     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 if they
---     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDraw-None-02700# A valid pipeline /must/ be bound to the
---     pipeline bind point used by this command
---
--- -   #VUID-vkCmdDraw-commandBuffer-02701# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command requires any dynamic state, that state
---     /must/ have been set or inherited (if the
---     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
---     @commandBuffer@, and done so after any previously bound pipeline
---     with the corresponding state not specified as dynamic
---
--- -   #VUID-vkCmdDraw-None-02859# There /must/ not have been any calls to
---     dynamic state setting commands for any state not specified as
---     dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command, since that pipeline was
---     bound
---
--- -   #VUID-vkCmdDraw-None-02702# If the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a 'Vulkan.Core10.Handles.Sampler' object that uses
---     unnormalized coordinates, that sampler /must/ not be used to sample
---     from any 'Vulkan.Core10.Handles.Image' with a
---     'Vulkan.Core10.Handles.ImageView' of the type
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
---     any shader stage
---
--- -   #VUID-vkCmdDraw-None-02703# If the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a 'Vulkan.Core10.Handles.Sampler' object that uses
---     unnormalized coordinates, that sampler /must/ not be used with any
---     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@
---     instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in
---     any shader stage
---
--- -   #VUID-vkCmdDraw-None-02704# If the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a 'Vulkan.Core10.Handles.Sampler' object that uses
---     unnormalized coordinates, that sampler /must/ not be used with any
---     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@
---     instructions that includes a LOD bias or any offset values, in any
---     shader stage
---
--- -   #VUID-vkCmdDraw-None-02705# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a uniform buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDraw-None-02706# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a storage buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDraw-commandBuffer-02707# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource accessed by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be a protected resource
---
--- -   #VUID-vkCmdDraw-None-04115# If a 'Vulkan.Core10.Handles.ImageView'
---     is accessed using @OpImageWrite@ as a result of this command, then
---     the @Type@ of the @Texel@ operand of that instruction /must/ have at
---     least as many components as the image view’s format
---
--- -   #VUID-vkCmdDraw-OpImageWrite-04469# If a
---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     buffer view’s format
---
--- -   #VUID-vkCmdDraw-SampledType-04470# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDraw-SampledType-04471# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDraw-SampledType-04472# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDraw-SampledType-04473# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDraw-sparseImageInt64Atomics-04474# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
---     created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDraw-sparseImageInt64Atomics-04475# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
---     created with the
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDraw-renderPass-02684# The current render pass /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
---     with the @renderPass@ member of the
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDraw-subpass-02685# The subpass index of the current
---     render pass /must/ be equal to the @subpass@ member of the
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDraw-None-02686# Every input attachment used by the
---     current subpass /must/ be bound to the pipeline via a descriptor set
---
--- -   #VUID-vkCmdDraw-None-04584# Image subresources used as attachments
---     in the current render pass /must/ not be accessed in any way other
---     than as an attachment by this command, except for cases involving
---     read-only access to depth\/stencil attachments as described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
---     chapter
---
--- -   #VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688# If the draw is
---     recorded in a render pass instance with multiview enabled, the
---     maximum instance index /must/ be less than or equal to
---     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
---
--- -   #VUID-vkCmdDraw-sampleLocationsEnable-02689# If the bound graphics
---     pipeline was created with
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
---     has a depth\/stencil attachment, then that attachment /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
---     bit set
---
--- -   #VUID-vkCmdDraw-viewportCount-03417# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDraw-scissorCount-03418# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDraw-viewportCount-03419# If the bound graphics pipeline
---     state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---
--- -   #VUID-vkCmdDraw-viewportCount-04137# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDraw-viewportCount-04138# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDraw-viewportCount-04139# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDraw-viewportCount-04140# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDraw-None-04876# If the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDraw-None-04877# If the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDraw-logicOp-04878# If the bound graphics pipeline state
---     was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command and the @logicOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
---
--- -   #VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, the bound graphics pipeline was created with
---     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, and any of the shader stages of the bound
---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ be @1@
---
--- -   #VUID-vkCmdDraw-blendEnable-04727# If rasterization is not disabled
---     in the bound graphics pipeline, then for each color attachment in
---     the subpass, if the corresponding image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     do not contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
---     then the @blendEnable@ member of the corresponding element of the
---     @pAttachments@ member of @pColorBlendState@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDraw-rasterizationSamples-04740# If rasterization is not
---     disabled in the bound graphics pipeline, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDraw-imageView-06172# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDraw-imageView-06173# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDraw-imageView-06174# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDraw-imageView-06175# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDraw-imageView-06176# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDraw-imageView-06177# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDraw-viewMask-06178# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
---
--- -   #VUID-vkCmdDraw-colorAttachmentCount-06179# If the current render
---     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---
--- -   #VUID-vkCmdDraw-colorAttachmentCount-06180# If the current render
---     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
---     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDraw-pDepthAttachment-06181# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDraw-pStencilAttachment-06182# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDraw-imageView-06183# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDraw-imageView-06184# If the current render pass instance
---     was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDraw-colorAttachmentCount-06185# If the currently bound
---     pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the corresponding element of the
---     @pColorAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDraw-pDepthAttachment-06186# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDraw-pStencilAttachment-06187# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDraw-colorAttachmentCount-06188# If the currently bound
---     pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDraw-pDepthAttachment-06189# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDraw-pStencilAttachment-06190# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDraw-renderPass-06198# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource written to by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be an unprotected resource
---
--- -   #VUID-vkCmdDraw-commandBuffer-02713# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, pipeline stages other than the framebuffer-space
---     and compute stages in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command /must/ not
---     write to any resource
---
--- -   #VUID-vkCmdDraw-commandBuffer-04617# If any of the shader stages of
---     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point used by this command uses the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
---     capability, then @commandBuffer@ /must/ not be a protected command
---     buffer
---
--- -   #VUID-vkCmdDraw-None-04007# All vertex input bindings accessed via
---     vertex input variables declared in the vertex shader entry point’s
---     interface /must/ have either valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
---
--- -   #VUID-vkCmdDraw-None-04008# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is not enabled, all vertex input bindings accessed via
---     vertex input variables declared in the vertex shader entry point’s
---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDraw-None-02721# For a given vertex buffer binding, any
---     attribute data fetched /must/ be entirely contained within the
---     corresponding vertex buffer binding, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
---
--- -   #VUID-vkCmdDraw-primitiveTopology-03420# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @primitiveTopology@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDraw-None-04912# If the bound graphics pipeline was
---     created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic states enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDraw-pStrides-04913# If the bound graphics pipeline was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command, and the @pStrides@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDraw-None-04914# If the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDraw-None-04875# If the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDraw-None-04879# If the bound graphics pipeline state was
---     created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDraw-stage-06481# The bound graphics pipeline /must/ not
---     have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of an element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDraw-commandBuffer-parameter# @commandBuffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDraw-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-vkCmdDraw-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDraw-renderpass# This command /must/ only be called
---     inside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdDraw :: forall io
-         . (MonadIO io)
-        => -- | @commandBuffer@ is the command buffer into which the command is
-           -- recorded.
-           CommandBuffer
-        -> -- | @vertexCount@ is the number of vertices to draw.
-           ("vertexCount" ::: Word32)
-        -> -- | @instanceCount@ is the number of instances to draw.
-           ("instanceCount" ::: Word32)
-        -> -- | @firstVertex@ is the index of the first vertex to draw.
-           ("firstVertex" ::: Word32)
-        -> -- | @firstInstance@ is the instance ID of the first instance to draw.
-           ("firstInstance" ::: Word32)
-        -> io ()
-cmdDraw commandBuffer vertexCount instanceCount firstVertex firstInstance = liftIO $ do
-  let vkCmdDrawPtr = pVkCmdDraw (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDraw is null" Nothing Nothing
-  let vkCmdDraw' = mkVkCmdDraw vkCmdDrawPtr
-  traceAroundEvent "vkCmdDraw" (vkCmdDraw' (commandBufferHandle (commandBuffer)) (vertexCount) (instanceCount) (firstVertex) (firstInstance))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawIndexed
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()
-
--- | vkCmdDrawIndexed - Draw primitives with indexed vertices
---
--- = Description
---
--- When the command is executed, primitives are assembled using the current
--- primitive topology and @indexCount@ vertices whose indices are retrieved
--- from the index buffer. The index buffer is treated as an array of
--- tightly packed unsigned integers of size defined by the
--- 'cmdBindIndexBuffer'::@indexType@ parameter with which the buffer was
--- bound.
---
--- The first vertex index is at an offset of @firstIndex@ × @indexSize@ +
--- @offset@ within the bound index buffer, where @offset@ is the offset
--- specified by 'cmdBindIndexBuffer' and @indexSize@ is the byte size of
--- the type specified by @indexType@. Subsequent index values are retrieved
--- from consecutive locations in the index buffer. Indices are first
--- compared to the primitive restart value, then zero extended to 32 bits
--- (if the @indexType@ is
--- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT' or
--- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16') and have
--- @vertexOffset@ added to them, before being supplied as the @vertexIndex@
--- value.
---
--- The primitives are drawn @instanceCount@ times with @instanceIndex@
--- starting with @firstInstance@ and increasing sequentially for each
--- instance. The assembled primitives execute the bound graphics pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawIndexed-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDrawIndexed-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
---     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDrawIndexed-None-06479# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
---     the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexed-None-02691# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
---     operations as a result of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawIndexed-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexed-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering, as specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDrawIndexed-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
---     reduction mode of either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     as a result of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering together with minmax filtering, as
---     specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDrawIndexed-flags-02696# Any
---     'Vulkan.Core10.Handles.Image' created with a
---     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
---     sampled as a result of this command /must/ only be sampled using a
---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
---
--- -   #VUID-vkCmdDrawIndexed-OpTypeImage-06423# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being written as a storage image
---     or storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexed-OpTypeImage-06424# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
---     storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexed-None-02697# For each set /n/ that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a descriptor set /must/
---     have been bound to /n/ at the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
---     feature is not enabled, then for each push constant that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a push constant value
---     /must/ have been set for the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
---     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
---     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
---
--- -   #VUID-vkCmdDrawIndexed-None-02700# A valid pipeline /must/ be bound
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndexed-commandBuffer-02701# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command requires any dynamic state, that state
---     /must/ have been set or inherited (if the
---     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
---     @commandBuffer@, and done so after any previously bound pipeline
---     with the corresponding state not specified as dynamic
---
--- -   #VUID-vkCmdDrawIndexed-None-02859# There /must/ not have been any
---     calls to dynamic state setting commands for any state not specified
---     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command, since that pipeline
---     was bound
---
--- -   #VUID-vkCmdDrawIndexed-None-02702# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used to sample from any
---     'Vulkan.Core10.Handles.Image' with a
---     'Vulkan.Core10.Handles.ImageView' of the type
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
---     any shader stage
---
--- -   #VUID-vkCmdDrawIndexed-None-02703# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
---
--- -   #VUID-vkCmdDrawIndexed-None-02704# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
---     includes a LOD bias or any offset values, in any shader stage
---
--- -   #VUID-vkCmdDrawIndexed-None-02705# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a uniform buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDrawIndexed-None-02706# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a storage buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDrawIndexed-commandBuffer-02707# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource accessed by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawIndexed-None-04115# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     image view’s format
---
--- -   #VUID-vkCmdDrawIndexed-OpImageWrite-04469# If a
---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     buffer view’s format
---
--- -   #VUID-vkCmdDrawIndexed-SampledType-04470# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDrawIndexed-SampledType-04471# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDrawIndexed-SampledType-04472# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDrawIndexed-SampledType-04473# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
---     created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
---     created with the
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDrawIndexed-renderPass-02684# The current render pass
---     /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
---     with the @renderPass@ member of the
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDrawIndexed-subpass-02685# The subpass index of the
---     current render pass /must/ be equal to the @subpass@ member of the
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDrawIndexed-None-02686# Every input attachment used by
---     the current subpass /must/ be bound to the pipeline via a descriptor
---     set
---
--- -   #VUID-vkCmdDrawIndexed-None-04584# Image subresources used as
---     attachments in the current render pass /must/ not be accessed in any
---     way other than as an attachment by this command, except for cases
---     involving read-only access to depth\/stencil attachments as
---     described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
---     chapter
---
--- -   #VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688# If the draw
---     is recorded in a render pass instance with multiview enabled, the
---     maximum instance index /must/ be less than or equal to
---     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
---
--- -   #VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
---     has a depth\/stencil attachment, then that attachment /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndexed-viewportCount-03417# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDrawIndexed-scissorCount-03418# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDrawIndexed-viewportCount-03419# If the bound graphics
---     pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexed-viewportCount-04137# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexed-viewportCount-04138# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexed-viewportCount-04139# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexed-viewportCount-04140# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexed-None-04876# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexed-None-04877# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexed-logicOp-04878# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command and the @logicOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
---
--- -   #VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, the bound graphics pipeline was created with
---     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, and any of the shader stages of the bound
---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ be @1@
---
--- -   #VUID-vkCmdDrawIndexed-blendEnable-04727# If rasterization is not
---     disabled in the bound graphics pipeline, then for each color
---     attachment in the subpass, if the corresponding image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     do not contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
---     then the @blendEnable@ member of the corresponding element of the
---     @pAttachments@ member of @pColorBlendState@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndexed-rasterizationSamples-04740# If rasterization
---     is not disabled in the bound graphics pipeline, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06172# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06173# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06174# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06175# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06176# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06177# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndexed-viewMask-06178# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
---
--- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06179# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---
--- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06180# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
---     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06181# If the current render
---     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06182# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06183# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexed-imageView-06184# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06185# If the currently
---     bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the corresponding element of the
---     @pColorAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06186# If the current render
---     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06187# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06188# If the currently
---     bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06189# If the current render
---     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06190# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexed-renderPass-06198# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource written to by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be an unprotected resource
---
--- -   #VUID-vkCmdDrawIndexed-commandBuffer-02713# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, pipeline stages other than the framebuffer-space
---     and compute stages in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command /must/ not
---     write to any resource
---
--- -   #VUID-vkCmdDrawIndexed-commandBuffer-04617# If any of the shader
---     stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point used by this command uses the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
---     capability, then @commandBuffer@ /must/ not be a protected command
---     buffer
---
--- -   #VUID-vkCmdDrawIndexed-None-04007# All vertex input bindings
---     accessed via vertex input variables declared in the vertex shader
---     entry point’s interface /must/ have either valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
---
--- -   #VUID-vkCmdDrawIndexed-None-04008# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is not enabled, all vertex input bindings accessed via
---     vertex input variables declared in the vertex shader entry point’s
---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndexed-None-02721# For a given vertex buffer
---     binding, any attribute data fetched /must/ be entirely contained
---     within the corresponding vertex buffer binding, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
---
--- -   #VUID-vkCmdDrawIndexed-primitiveTopology-03420# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @primitiveTopology@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawIndexed-None-04912# If the bound graphics pipeline
---     was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic states enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDrawIndexed-pStrides-04913# If the bound graphics
---     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command, and the @pStrides@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawIndexed-None-04914# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDrawIndexed-None-04875# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexed-None-04879# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexed-stage-06481# The bound graphics pipeline
---     /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of an element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
---
--- -   #VUID-vkCmdDrawIndexed-firstIndex-04932# (@indexSize@ ×
---     (@firstIndex@ + @indexCount@) + @offset@) /must/ be less than or
---     equal to the size of the bound index buffer, with @indexSize@ being
---     based on the type specified by @indexType@, where the index buffer,
---     @indexType@, and @offset@ are specified via 'cmdBindIndexBuffer'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawIndexed-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawIndexed-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdDrawIndexed :: forall io
-                . (MonadIO io)
-               => -- | @commandBuffer@ is the command buffer into which the command is
-                  -- recorded.
-                  CommandBuffer
-               -> -- | @indexCount@ is the number of vertices to draw.
-                  ("indexCount" ::: Word32)
-               -> -- | @instanceCount@ is the number of instances to draw.
-                  ("instanceCount" ::: Word32)
-               -> -- | @firstIndex@ is the base index within the index buffer.
-                  ("firstIndex" ::: Word32)
-               -> -- | @vertexOffset@ is the value added to the vertex index before indexing
-                  -- into the vertex buffer.
-                  ("vertexOffset" ::: Int32)
-               -> -- | @firstInstance@ is the instance ID of the first instance to draw.
-                  ("firstInstance" ::: Word32)
-               -> io ()
-cmdDrawIndexed commandBuffer indexCount instanceCount firstIndex vertexOffset firstInstance = liftIO $ do
-  let vkCmdDrawIndexedPtr = pVkCmdDrawIndexed (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawIndexedPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexed is null" Nothing Nothing
-  let vkCmdDrawIndexed' = mkVkCmdDrawIndexed vkCmdDrawIndexedPtr
-  traceAroundEvent "vkCmdDrawIndexed" (vkCmdDrawIndexed' (commandBufferHandle (commandBuffer)) (indexCount) (instanceCount) (firstIndex) (vertexOffset) (firstInstance))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawIndirect
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawIndirect - Draw primitives with indirect parameters
---
--- = Description
---
--- 'cmdDrawIndirect' behaves similarly to 'cmdDraw' except that the
--- parameters are read by the device from a buffer during execution.
--- @drawCount@ draws are executed by the command, with parameters taken
--- from @buffer@ starting at @offset@ and increasing by @stride@ bytes for
--- each successive draw. The parameters of each draw are encoded in an
--- array of 'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures. If
--- @drawCount@ is less than or equal to one, @stride@ is ignored.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawIndirect-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDrawIndirect-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
---     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDrawIndirect-None-06479# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
---     the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndirect-None-02691# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
---     operations as a result of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawIndirect-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirect-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering, as specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDrawIndirect-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
---     reduction mode of either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     as a result of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering together with minmax filtering, as
---     specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDrawIndirect-flags-02696# Any
---     'Vulkan.Core10.Handles.Image' created with a
---     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
---     sampled as a result of this command /must/ only be sampled using a
---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
---
--- -   #VUID-vkCmdDrawIndirect-OpTypeImage-06423# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being written as a storage image
---     or storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndirect-OpTypeImage-06424# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
---     storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndirect-None-02697# For each set /n/ that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a descriptor set /must/
---     have been bound to /n/ at the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
---     feature is not enabled, then for each push constant that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a push constant value
---     /must/ have been set for the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
---     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
---     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
---
--- -   #VUID-vkCmdDrawIndirect-None-02700# A valid pipeline /must/ be bound
---     to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndirect-commandBuffer-02701# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command requires any dynamic state, that state
---     /must/ have been set or inherited (if the
---     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
---     @commandBuffer@, and done so after any previously bound pipeline
---     with the corresponding state not specified as dynamic
---
--- -   #VUID-vkCmdDrawIndirect-None-02859# There /must/ not have been any
---     calls to dynamic state setting commands for any state not specified
---     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to
---     the pipeline bind point used by this command, since that pipeline
---     was bound
---
--- -   #VUID-vkCmdDrawIndirect-None-02702# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used to sample from any
---     'Vulkan.Core10.Handles.Image' with a
---     'Vulkan.Core10.Handles.ImageView' of the type
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
---     any shader stage
---
--- -   #VUID-vkCmdDrawIndirect-None-02703# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
---
--- -   #VUID-vkCmdDrawIndirect-None-02704# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
---     includes a LOD bias or any offset values, in any shader stage
---
--- -   #VUID-vkCmdDrawIndirect-None-02705# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a uniform buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDrawIndirect-None-02706# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a storage buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDrawIndirect-commandBuffer-02707# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource accessed by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawIndirect-None-04115# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     image view’s format
---
--- -   #VUID-vkCmdDrawIndirect-OpImageWrite-04469# If a
---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     buffer view’s format
---
--- -   #VUID-vkCmdDrawIndirect-SampledType-04470# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDrawIndirect-SampledType-04471# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDrawIndirect-SampledType-04472# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDrawIndirect-SampledType-04473# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
---     created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
---     created with the
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDrawIndirect-renderPass-02684# The current render pass
---     /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
---     with the @renderPass@ member of the
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDrawIndirect-subpass-02685# The subpass index of the
---     current render pass /must/ be equal to the @subpass@ member of the
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDrawIndirect-None-02686# Every input attachment used by
---     the current subpass /must/ be bound to the pipeline via a descriptor
---     set
---
--- -   #VUID-vkCmdDrawIndirect-None-04584# Image subresources used as
---     attachments in the current render pass /must/ not be accessed in any
---     way other than as an attachment by this command, except for cases
---     involving read-only access to depth\/stencil attachments as
---     described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
---     chapter
---
--- -   #VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688# If the draw
---     is recorded in a render pass instance with multiview enabled, the
---     maximum instance index /must/ be less than or equal to
---     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
---
--- -   #VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689# If the bound
---     graphics pipeline was created with
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
---     has a depth\/stencil attachment, then that attachment /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndirect-viewportCount-03417# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDrawIndirect-scissorCount-03418# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDrawIndirect-viewportCount-03419# If the bound graphics
---     pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndirect-viewportCount-04137# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndirect-viewportCount-04138# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndirect-viewportCount-04139# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndirect-viewportCount-04140# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142# If the
---     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndirect-None-04876# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndirect-None-04877# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndirect-logicOp-04878# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command and the @logicOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
---
--- -   #VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, the bound graphics pipeline was created with
---     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, and any of the shader stages of the bound
---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ be @1@
---
--- -   #VUID-vkCmdDrawIndirect-blendEnable-04727# If rasterization is not
---     disabled in the bound graphics pipeline, then for each color
---     attachment in the subpass, if the corresponding image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     do not contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
---     then the @blendEnable@ member of the corresponding element of the
---     @pAttachments@ member of @pColorBlendState@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndirect-rasterizationSamples-04740# If rasterization
---     is not disabled in the bound graphics pipeline, and neither the
---     @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06172# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06173# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06174# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06175# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06176# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06177# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndirect-viewMask-06178# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
---
--- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06179# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---
--- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06180# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
---     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06181# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06182# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06183# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndirect-imageView-06184# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06185# If the currently
---     bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the corresponding element of the
---     @pColorAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06186# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06187# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06188# If the currently
---     bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06189# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06190# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndirect-renderPass-06198# If the current render pass
---     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndirect-None-04007# All vertex input bindings
---     accessed via vertex input variables declared in the vertex shader
---     entry point’s interface /must/ have either valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
---
--- -   #VUID-vkCmdDrawIndirect-None-04008# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is not enabled, all vertex input bindings accessed via
---     vertex input variables declared in the vertex shader entry point’s
---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndirect-None-02721# For a given vertex buffer
---     binding, any attribute data fetched /must/ be entirely contained
---     within the corresponding vertex buffer binding, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
---
--- -   #VUID-vkCmdDrawIndirect-primitiveTopology-03420# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @primitiveTopology@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawIndirect-None-04912# If the bound graphics pipeline
---     was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic states enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDrawIndirect-pStrides-04913# If the bound graphics
---     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command, and the @pStrides@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawIndirect-None-04914# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDrawIndirect-None-04875# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndirect-None-04879# If the bound graphics pipeline
---     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndirect-stage-06481# The bound graphics pipeline
---     /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of an element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
---
--- -   #VUID-vkCmdDrawIndirect-buffer-02708# If @buffer@ is non-sparse then
---     it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawIndirect-buffer-02709# @buffer@ /must/ have been
---     created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndirect-offset-02710# @offset@ /must/ be a multiple
---     of @4@
---
--- -   #VUID-vkCmdDrawIndirect-commandBuffer-02711# @commandBuffer@ /must/
---     not be a protected command buffer
---
--- -   #VUID-vkCmdDrawIndirect-drawCount-02718# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>
---     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
---
--- -   #VUID-vkCmdDrawIndirect-drawCount-02719# @drawCount@ /must/ be less
---     than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawIndirect-firstInstance-00478# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
---     feature is not enabled, all the @firstInstance@ members of the
---     'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures accessed
---     by this command /must/ be @0@
---
--- -   #VUID-vkCmdDrawIndirect-drawCount-00476# If @drawCount@ is greater
---     than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be greater
---     than or equal to
---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')
---
--- -   #VUID-vkCmdDrawIndirect-drawCount-00487# If @drawCount@ is equal to
---     @1@, (@offset@ +
---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be
---     less than or equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawIndirect-drawCount-00488# If @drawCount@ is greater
---     than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be
---     less than or equal to the size of @buffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawIndirect-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawIndirect-buffer-parameter# @buffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawIndirect-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawIndirect-commonparent# Both of @buffer@, and
---     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawIndirect :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command is
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @buffer@ is the buffer containing draw parameters.
-                   Buffer
-                -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.
-                   ("offset" ::: DeviceSize)
-                -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.
-                   ("drawCount" ::: Word32)
-                -> -- | @stride@ is the byte stride between successive sets of draw parameters.
-                   ("stride" ::: Word32)
-                -> io ()
-cmdDrawIndirect commandBuffer buffer offset drawCount stride = liftIO $ do
-  let vkCmdDrawIndirectPtr = pVkCmdDrawIndirect (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawIndirectPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirect is null" Nothing Nothing
-  let vkCmdDrawIndirect' = mkVkCmdDrawIndirect vkCmdDrawIndirectPtr
-  traceAroundEvent "vkCmdDrawIndirect" (vkCmdDrawIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDrawIndexedIndirect
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDrawIndexedIndirect - Draw primitives with indirect parameters and
--- indexed vertices
---
--- = Description
---
--- 'cmdDrawIndexedIndirect' behaves similarly to 'cmdDrawIndexed' except
--- that the parameters are read by the device from a buffer during
--- execution. @drawCount@ draws are executed by the command, with
--- parameters taken from @buffer@ starting at @offset@ and increasing by
--- @stride@ bytes for each successive draw. The parameters of each draw are
--- encoded in an array of
--- 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures. If
--- @drawCount@ is less than or equal to one, @stride@ is ignored.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDrawIndexedIndirect-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
---     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-06479# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
---     the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02691# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
---     operations as a result of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering, as specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
---     reduction mode of either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     as a result of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering together with minmax filtering, as
---     specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-flags-02696# Any
---     'Vulkan.Core10.Handles.Image' created with a
---     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
---     sampled as a result of this command /must/ only be sampled using a
---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06423# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being written as a storage image
---     or storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06424# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
---     storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02697# For each set /n/ that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a descriptor set /must/
---     have been bound to /n/ at the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
---     feature is not enabled, then for each push constant that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a push constant value
---     /must/ have been set for the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
---     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
---     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
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02700# A valid pipeline /must/
---     be bound to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command requires any dynamic state, that state
---     /must/ have been set or inherited (if the
---     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
---     @commandBuffer@, and done so after any previously bound pipeline
---     with the corresponding state not specified as dynamic
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02859# There /must/ not have
---     been any calls to dynamic state setting commands for any state not
---     specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02702# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used to sample from any
---     'Vulkan.Core10.Handles.Image' with a
---     'Vulkan.Core10.Handles.ImageView' of the type
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
---     any shader stage
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02703# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02704# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
---     includes a LOD bias or any offset values, in any shader stage
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02705# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a uniform buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02706# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a storage buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707# If
---     @commandBuffer@ is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource accessed by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be a protected resource
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04115# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     image view’s format
---
--- -   #VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469# If a
---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     buffer view’s format
---
--- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04470# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04471# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04472# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04473# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
---     created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
---     created with the
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-renderPass-02684# The current render
---     pass /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
---     with the @renderPass@ member of the
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-subpass-02685# The subpass index of
---     the current render pass /must/ be equal to the @subpass@ member of
---     the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
---     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
---     to
---     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02686# Every input attachment
---     used by the current subpass /must/ be bound to the pipeline via a
---     descriptor set
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04584# Image subresources used
---     as attachments in the current render pass /must/ not be accessed in
---     any way other than as an attachment by this command, except for
---     cases involving read-only access to depth\/stencil attachments as
---     described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
---     chapter
---
--- -   #VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688# If
---     the draw is recorded in a render pass instance with multiview
---     enabled, the maximum instance index /must/ be less than or equal to
---     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689# If the
---     bound graphics pipeline was created with
---     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
---     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
---     has a depth\/stencil attachment, then that attachment /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-03417# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirect-scissorCount-03418# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ match the
---     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
---     of the pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-03419# If the bound
---     graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04137# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04138# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04139# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic state enabled, then the bound graphics pipeline /must/ have
---     been created with
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04140# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
---     dynamic states enabled then the @viewportCount@ parameter in the
---     last call to
---     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
---     /must/ be greater than or equal to the @viewportCount@ parameter in
---     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142# If
---     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled and a
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
---     structure chained from @VkPipelineVieportCreateInfo@, then the bound
---     graphics pipeline /must/ have been created with
---     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
---     greater or equal to the @viewportCount@ parameter in the last call
---     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04876# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04877# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-logicOp-04878# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command and the @logicOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
---
--- -   #VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
---     limit is not supported, the bound graphics pipeline was created with
---     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---     dynamic state enabled, and any of the shader stages of the bound
---     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
---     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
---     /must/ be @1@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-blendEnable-04727# If rasterization
---     is not disabled in the bound graphics pipeline, then for each color
---     attachment in the subpass, if the corresponding image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     do not contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
---     then the @blendEnable@ member of the corresponding element of the
---     @pAttachments@ member of @pColorBlendState@ /must/ be
---     'Vulkan.Core10.FundamentalTypes.FALSE'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740# If
---     rasterization is not disabled in the bound graphics pipeline, and
---     neither the @VK_AMD_mixed_attachment_samples@ nor the
---     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     /must/ be the same as the current subpass color and\/or
---     depth\/stencil attachments
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06172# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06173# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06174# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06175# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06176# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pDepthAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pDepthAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the depth attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06177# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @imageView@ member of @pStencilAttachment@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
---     @pStencilAttachment@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
---     this command /must/ not write any values to the stencil attachment
---
--- -   #VUID-vkCmdDrawIndexedIndirect-viewMask-06178# If the current render
---     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound graphics pipeline /must/ have been created with
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
---     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06180# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
---     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06182# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06183# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06184# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
---     bound graphics pipeline /must/ have been created with
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185# If the
---     currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the corresponding element of the
---     @pColorAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06188# If the
---     currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     array with a @imageView@ not equal to
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
---     with a sample count equal to the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline
---
--- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06189# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190# If the
---     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline was created without a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
---     used to create the currently bound graphics pipeline /must/ be equal
---     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
---
--- -   #VUID-vkCmdDrawIndexedIndirect-renderPass-06198# If the current
---     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the currently bound pipeline /must/ have been created with a
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
---     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04007# All vertex input bindings
---     accessed via vertex input variables declared in the vertex shader
---     entry point’s interface /must/ have either valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04008# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is not enabled, all vertex input bindings accessed via
---     vertex input variables declared in the vertex shader entry point’s
---     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-02721# For a given vertex buffer
---     binding, any attribute data fetched /must/ be entirely contained
---     within the corresponding vertex buffer binding, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
---
--- -   #VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420# If the bound
---     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command, and the @primitiveTopology@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
---     /must/ be of the same
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
---     as the pipeline
---     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
---     state
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04912# If the bound graphics
---     pipeline was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic states enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-pStrides-04913# If the bound graphics
---     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command, and the @pStrides@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
---     /must/ not be @NULL@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04914# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
---     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
---     /must/ have been called in the current command buffer prior to this
---     draw command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04875# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-None-04879# If the bound graphics
---     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
---     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
---     /must/ have been called in the current command buffer prior to this
---     drawing command
---
--- -   #VUID-vkCmdDrawIndexedIndirect-stage-06481# The bound graphics
---     pipeline /must/ not have been created with the
---     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
---     member of an element of
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
---     to
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
---     or
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
---
--- -   #VUID-vkCmdDrawIndexedIndirect-buffer-02708# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDrawIndexedIndirect-buffer-02709# @buffer@ /must/ have
---     been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDrawIndexedIndirect-offset-02710# @offset@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711# @commandBuffer@
---     /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02718# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>
---     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02719# @drawCount@ /must/
---     be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00528# If @drawCount@ is
---     greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be
---     greater than or equal to
---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')
---
--- -   #VUID-vkCmdDrawIndexedIndirect-firstInstance-00530# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
---     feature is not enabled, all the @firstInstance@ members of the
---     'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures
---     accessed by this command /must/ be @0@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00539# If @drawCount@ is
---     equal to @1@, (@offset@ +
---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))
---     /must/ be less than or equal to the size of @buffer@
---
--- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00540# If @drawCount@ is
---     greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
---     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))
---     /must/ be less than or equal to the size of @buffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDrawIndexedIndirect-buffer-parameter# @buffer@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdDrawIndexedIndirect-renderpass# This command /must/ only
---     be called inside of a render pass instance
---
--- -   #VUID-vkCmdDrawIndexedIndirect-commonparent# Both of @buffer@, and
---     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDrawIndexedIndirect :: forall io
-                        . (MonadIO io)
-                       => -- | @commandBuffer@ is the command buffer into which the command is
-                          -- recorded.
-                          CommandBuffer
-                       -> -- | @buffer@ is the buffer containing draw parameters.
-                          Buffer
-                       -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.
-                          ("offset" ::: DeviceSize)
-                       -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.
-                          ("drawCount" ::: Word32)
-                       -> -- | @stride@ is the byte stride between successive sets of draw parameters.
-                          ("stride" ::: Word32)
-                       -> io ()
-cmdDrawIndexedIndirect commandBuffer buffer offset drawCount stride = liftIO $ do
-  let vkCmdDrawIndexedIndirectPtr = pVkCmdDrawIndexedIndirect (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDrawIndexedIndirectPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexedIndirect is null" Nothing Nothing
-  let vkCmdDrawIndexedIndirect' = mkVkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirectPtr
-  traceAroundEvent "vkCmdDrawIndexedIndirect" (vkCmdDrawIndexedIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDispatch
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()
-
--- | vkCmdDispatch - Dispatch compute work items
---
--- = Description
---
--- When the command is executed, a global workgroup consisting of
--- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is
--- assembled.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDispatch-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDispatch-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
---     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDispatch-None-06479# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
---     the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---
--- -   #VUID-vkCmdDispatch-None-02691# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
---     operations as a result of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDispatch-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDispatch-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering, as specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDispatch-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
---     reduction mode of either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     as a result of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering together with minmax filtering, as
---     specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDispatch-flags-02696# Any 'Vulkan.Core10.Handles.Image'
---     created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
---     containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
---     sampled as a result of this command /must/ only be sampled using a
---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
---
--- -   #VUID-vkCmdDispatch-OpTypeImage-06423# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being written as a storage image
---     or storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDispatch-OpTypeImage-06424# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
---     storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDispatch-None-02697# For each set /n/ that is statically
---     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
---     bind point used by this command, a descriptor set /must/ have been
---     bound to /n/ at the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
---     feature is not enabled, then for each push constant that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a push constant value
---     /must/ have been set for the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
---     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 if they
---     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
---     the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatch-None-02700# A valid pipeline /must/ be bound to
---     the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatch-commandBuffer-02701# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command requires any dynamic state, that state
---     /must/ have been set or inherited (if the
---     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
---     @commandBuffer@, and done so after any previously bound pipeline
---     with the corresponding state not specified as dynamic
---
--- -   #VUID-vkCmdDispatch-None-02859# There /must/ not have been any calls
---     to dynamic state setting commands for any state not specified as
---     dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to the
---     pipeline bind point used by this command, since that pipeline was
---     bound
---
--- -   #VUID-vkCmdDispatch-None-02702# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used to sample from any
---     'Vulkan.Core10.Handles.Image' with a
---     'Vulkan.Core10.Handles.ImageView' of the type
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
---     any shader stage
---
--- -   #VUID-vkCmdDispatch-None-02703# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
---
--- -   #VUID-vkCmdDispatch-None-02704# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
---     includes a LOD bias or any offset values, in any shader stage
---
--- -   #VUID-vkCmdDispatch-None-02705# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a uniform buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDispatch-None-02706# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a storage buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDispatch-commandBuffer-02707# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource accessed by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be a protected resource
---
--- -   #VUID-vkCmdDispatch-None-04115# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     image view’s format
---
--- -   #VUID-vkCmdDispatch-OpImageWrite-04469# If a
---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     buffer view’s format
---
--- -   #VUID-vkCmdDispatch-SampledType-04470# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDispatch-SampledType-04471# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDispatch-SampledType-04472# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDispatch-SampledType-04473# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDispatch-sparseImageInt64Atomics-04474# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
---     created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDispatch-sparseImageInt64Atomics-04475# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
---     created with the
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDispatch-commandBuffer-02712# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource written to by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be an unprotected resource
---
--- -   #VUID-vkCmdDispatch-commandBuffer-02713# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, pipeline stages other than the framebuffer-space
---     and compute stages in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command /must/ not
---     write to any resource
---
--- -   #VUID-vkCmdDispatch-commandBuffer-04617# If any of the shader stages
---     of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
---     point used by this command uses the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
---     capability, then @commandBuffer@ /must/ not be a protected command
---     buffer
---
--- -   #VUID-vkCmdDispatch-groupCountX-00386# @groupCountX@ /must/ be less
---     than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
---
--- -   #VUID-vkCmdDispatch-groupCountY-00387# @groupCountY@ /must/ be less
---     than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
---
--- -   #VUID-vkCmdDispatch-groupCountZ-00388# @groupCountZ@ /must/ be less
---     than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDispatch-commandBuffer-parameter# @commandBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDispatch-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-vkCmdDispatch-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdDispatch-renderpass# This command /must/ only be called
---     outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdDispatch :: forall io
-             . (MonadIO io)
-            => -- | @commandBuffer@ is the command buffer into which the command will be
-               -- recorded.
-               CommandBuffer
-            -> -- | @groupCountX@ is the number of local workgroups to dispatch in the X
-               -- dimension.
-               ("groupCountX" ::: Word32)
-            -> -- | @groupCountY@ is the number of local workgroups to dispatch in the Y
-               -- dimension.
-               ("groupCountY" ::: Word32)
-            -> -- | @groupCountZ@ is the number of local workgroups to dispatch in the Z
-               -- dimension.
-               ("groupCountZ" ::: Word32)
-            -> io ()
-cmdDispatch commandBuffer groupCountX groupCountY groupCountZ = liftIO $ do
-  let vkCmdDispatchPtr = pVkCmdDispatch (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDispatchPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatch is null" Nothing Nothing
-  let vkCmdDispatch' = mkVkCmdDispatch vkCmdDispatchPtr
-  traceAroundEvent "vkCmdDispatch" (vkCmdDispatch' (commandBufferHandle (commandBuffer)) (groupCountX) (groupCountY) (groupCountZ))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdDispatchIndirect
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()
-
--- | vkCmdDispatchIndirect - Dispatch compute work items with indirect
--- parameters
---
--- = Description
---
--- 'cmdDispatchIndirect' behaves similarly to 'cmdDispatch' except that the
--- parameters are read by the device from a buffer during execution. The
--- parameters of the dispatch are encoded in a
--- 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand' structure taken from
--- @buffer@ starting at @offset@.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdDispatchIndirect-magFilter-04553# If a
---     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
---     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
---     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
---     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDispatchIndirect-mipmapMode-04770# If a
---     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
---     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
---     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
---     this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdDispatchIndirect-None-06479# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
---     the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---
--- -   #VUID-vkCmdDispatchIndirect-None-02691# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
---     operations as a result of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
---
--- -   #VUID-vkCmdDispatchIndirect-None-02692# If a
---     'Vulkan.Core10.Handles.ImageView' is sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command, then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
---     /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdDispatchIndirect-filterCubic-02694# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
---     of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering, as specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695# Any
---     'Vulkan.Core10.Handles.ImageView' being sampled with
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
---     reduction mode of either
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
---     or
---     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
---     as a result of this command /must/ have a
---     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
---     supports cubic filtering together with minmax filtering, as
---     specified by
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
---     returned by
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
---
--- -   #VUID-vkCmdDispatchIndirect-flags-02696# Any
---     'Vulkan.Core10.Handles.Image' created with a
---     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
---     sampled as a result of this command /must/ only be sampled using a
---     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
---     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
---
--- -   #VUID-vkCmdDispatchIndirect-OpTypeImage-06423# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being written as a storage image
---     or storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDispatchIndirect-OpTypeImage-06424# Any
---     'Vulkan.Core10.Handles.ImageView' or
---     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
---     storage texel buffer where the image format field of the
---     @OpTypeImage@ is @Unknown@ /must/ have image format features that
---     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---
--- -   #VUID-vkCmdDispatchIndirect-None-02697# For each set /n/ that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a descriptor set /must/
---     have been bound to /n/ at the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
---     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
---     feature is not enabled, then for each push constant that is
---     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
---     pipeline bind point used by this command, a push constant value
---     /must/ have been set for the same pipeline bind point, with a
---     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
---     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
---     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
---     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
---
--- -   #VUID-vkCmdDispatchIndirect-None-02700# A valid pipeline /must/ be
---     bound to the pipeline bind point used by this command
---
--- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02701# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command requires any dynamic state, that state
---     /must/ have been set or inherited (if the
---     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
---     @commandBuffer@, and done so after any previously bound pipeline
---     with the corresponding state not specified as dynamic
---
--- -   #VUID-vkCmdDispatchIndirect-None-02859# There /must/ not have been
---     any calls to dynamic state setting commands for any state not
---     specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object
---     bound to the pipeline bind point used by this command, since that
---     pipeline was bound
---
--- -   #VUID-vkCmdDispatchIndirect-None-02702# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used to sample from any
---     'Vulkan.Core10.Handles.Image' with a
---     'Vulkan.Core10.Handles.ImageView' of the type
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
---     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
---     any shader stage
---
--- -   #VUID-vkCmdDispatchIndirect-None-02703# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
---     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
---
--- -   #VUID-vkCmdDispatchIndirect-None-02704# If the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command accesses a
---     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
---     coordinates, that sampler /must/ not be used with any of the SPIR-V
---     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
---     includes a LOD bias or any offset values, in any shader stage
---
--- -   #VUID-vkCmdDispatchIndirect-None-02705# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a uniform buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDispatchIndirect-None-02706# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
---     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
---     object bound to the pipeline bind point used by this command
---     accesses a storage buffer, it /must/ not access values outside of
---     the range of the buffer as specified in the descriptor set bound to
---     the same pipeline bind point
---
--- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02707# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, any resource accessed by the
---     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
---     point used by this command /must/ not be a protected resource
---
--- -   #VUID-vkCmdDispatchIndirect-None-04115# If a
---     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     image view’s format
---
--- -   #VUID-vkCmdDispatchIndirect-OpImageWrite-04469# If a
---     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
---     as a result of this command, then the @Type@ of the @Texel@ operand
---     of that instruction /must/ have at least as many components as the
---     buffer view’s format
---
--- -   #VUID-vkCmdDispatchIndirect-SampledType-04470# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDispatchIndirect-SampledType-04471# If a
---     'Vulkan.Core10.Handles.ImageView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDispatchIndirect-SampledType-04472# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
---     width is accessed as a result of this command, the @SampledType@ of
---     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
---     of 64
---
--- -   #VUID-vkCmdDispatchIndirect-SampledType-04473# If a
---     'Vulkan.Core10.Handles.BufferView' with a
---     'Vulkan.Core10.Enums.Format.Format' that has a component width less
---     than 64-bit is accessed as a result of this command, the
---     @SampledType@ of the @OpTypeImage@ operand of that instruction
---     /must/ have a @Width@ of 32
---
--- -   #VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
---     created with the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
---     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
---     created with the
---     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
---     flag /must/ not be accessed by atomic instructions through an
---     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
---     command
---
--- -   #VUID-vkCmdDispatchIndirect-buffer-02708# If @buffer@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdDispatchIndirect-buffer-02709# @buffer@ /must/ have been
---     created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
---     bit set
---
--- -   #VUID-vkCmdDispatchIndirect-offset-02710# @offset@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02711# @commandBuffer@
---     /must/ not be a protected command buffer
---
--- -   #VUID-vkCmdDispatchIndirect-offset-00407# The sum of @offset@ and
---     the size of 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'
---     /must/ be less than or equal to the size of @buffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdDispatchIndirect-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdDispatchIndirect-buffer-parameter# @buffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdDispatchIndirect-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdDispatchIndirect-commonparent# Both of @buffer@, and
---     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdDispatchIndirect :: forall io
-                     . (MonadIO io)
-                    => -- | @commandBuffer@ is the command buffer into which the command will be
-                       -- recorded.
-                       CommandBuffer
-                    -> -- | @buffer@ is the buffer containing dispatch parameters.
-                       Buffer
-                    -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.
-                       ("offset" ::: DeviceSize)
-                    -> io ()
-cmdDispatchIndirect commandBuffer buffer offset = liftIO $ do
-  let vkCmdDispatchIndirectPtr = pVkCmdDispatchIndirect (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdDispatchIndirectPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchIndirect is null" Nothing Nothing
-  let vkCmdDispatchIndirect' = mkVkCmdDispatchIndirect vkCmdDispatchIndirectPtr
-  traceAroundEvent "vkCmdDispatchIndirect" (vkCmdDispatchIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyBuffer
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()
-
--- | vkCmdCopyBuffer - Copy data between buffer regions
---
--- = Description
---
--- Each region in @pRegions@ is copied from the source buffer to the same
--- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be
--- the same buffer or alias the same memory, but the resulting values are
--- undefined if the copy regions overlap in memory.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyBuffer-commandBuffer-01822# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyBuffer-commandBuffer-01823# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyBuffer-commandBuffer-01824# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
---
--- -   #VUID-vkCmdCopyBuffer-srcOffset-00113# The @srcOffset@ member of
---     each element of @pRegions@ /must/ be less than the size of
---     @srcBuffer@
---
--- -   #VUID-vkCmdCopyBuffer-dstOffset-00114# The @dstOffset@ member of
---     each element of @pRegions@ /must/ be less than the size of
---     @dstBuffer@
---
--- -   #VUID-vkCmdCopyBuffer-size-00115# The @size@ member of each element
---     of @pRegions@ /must/ be less than or equal to the size of
---     @srcBuffer@ minus @srcOffset@
---
--- -   #VUID-vkCmdCopyBuffer-size-00116# The @size@ member of each element
---     of @pRegions@ /must/ be less than or equal to the size of
---     @dstBuffer@ minus @dstOffset@
---
--- -   #VUID-vkCmdCopyBuffer-pRegions-00117# The union of the source
---     regions, and the union of the destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-vkCmdCopyBuffer-srcBuffer-00118# @srcBuffer@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyBuffer-srcBuffer-00119# If @srcBuffer@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyBuffer-dstBuffer-00120# @dstBuffer@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyBuffer-dstBuffer-00121# If @dstBuffer@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyBuffer-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyBuffer-srcBuffer-parameter# @srcBuffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdCopyBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdCopyBuffer-pRegions-parameter# @pRegions@ /must/ be a
---     valid pointer to an array of @regionCount@ valid 'BufferCopy'
---     structures
---
--- -   #VUID-vkCmdCopyBuffer-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-vkCmdCopyBuffer-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyBuffer-renderpass# This command /must/ only be called
---     outside of a render pass instance
---
--- -   #VUID-vkCmdCopyBuffer-regionCount-arraylength# @regionCount@ /must/
---     be greater than @0@
---
--- -   #VUID-vkCmdCopyBuffer-commonparent# Each of @commandBuffer@,
---     @dstBuffer@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'BufferCopy',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdCopyBuffer :: forall io
-               . (MonadIO io)
-              => -- | @commandBuffer@ is the command buffer into which the command will be
-                 -- recorded.
-                 CommandBuffer
-              -> -- | @srcBuffer@ is the source buffer.
-                 ("srcBuffer" ::: Buffer)
-              -> -- | @dstBuffer@ is the destination buffer.
-                 ("dstBuffer" ::: Buffer)
-              -> -- | @pRegions@ is a pointer to an array of 'BufferCopy' structures
-                 -- specifying the regions to copy.
-                 ("regions" ::: Vector BufferCopy)
-              -> io ()
-cmdCopyBuffer commandBuffer srcBuffer dstBuffer regions = liftIO . evalContT $ do
-  let vkCmdCopyBufferPtr = pVkCmdCopyBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyBufferPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBuffer is null" Nothing Nothing
-  let vkCmdCopyBuffer' = mkVkCmdCopyBuffer vkCmdCopyBufferPtr
-  pPRegions <- ContT $ allocaBytes @BufferCopy ((Data.Vector.length (regions)) * 24)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (24 * (i)) :: Ptr BufferCopy) (e)) (regions)
-  lift $ traceAroundEvent "vkCmdCopyBuffer" (vkCmdCopyBuffer' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyImage
-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()
-
--- | vkCmdCopyImage - Copy data between images
---
--- = Description
---
--- Each region in @pRegions@ is copied from the source image to the same
--- region of the destination image. @srcImage@ and @dstImage@ /can/ be the
--- same image or alias the same memory.
---
--- The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats
--- are compatible if they share the same class, as shown in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
--- table. Depth\/stencil formats /must/ match exactly.
---
--- If either @srcImage@ or @dstImage@ has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
--- regions of each plane to be copied /must/ be specified separately using
--- the @srcSubresource@ and @dstSubresource@ members of the 'ImageCopy'
--- structure. In this case, the @aspectMask@ of the @srcSubresource@ or
--- @dstSubresource@ that refers to the multi-planar image /must/ be
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'. For
--- the purposes of 'cmdCopyImage', each plane of a multi-planar image is
--- treated as having the format listed in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>
--- for the plane identified by the @aspectMask@ of the corresponding
--- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'
--- and to coordinates used in the copy, which correspond to texels in the
--- /plane/ rather than how these texels map to coordinates in the image as
--- a whole.
---
--- Note
---
--- For example, the
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' plane
--- of a 'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_420_UNORM' image
--- is compatible with an image of format
--- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM' and (less usefully) with
--- the 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
--- plane of an image of format
--- 'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16',
--- as each texel is 2 bytes in size.
---
--- 'cmdCopyImage' allows copying between /size-compatible/ compressed and
--- uncompressed internal formats. Formats are size-compatible if the texel
--- block size of the uncompressed format is equal to the texel block size
--- of the compressed format. Such a copy does not perform on-the-fly
--- compression or decompression. When copying from an uncompressed format
--- to a compressed format, each texel of uncompressed data of the source
--- image is copied as a raw value to the corresponding compressed texel
--- block of the destination image. When copying from a compressed format to
--- an uncompressed format, each compressed texel block of the source image
--- is copied as a raw value to the corresponding texel of uncompressed data
--- in the destination image. Thus, for example, it is legal to copy between
--- a 128-bit uncompressed format and a compressed format which has a
--- 128-bit sized compressed texel block representing 4×4 texels (using 8
--- bits per texel), or between a 64-bit uncompressed format and a
--- compressed format which has a 64-bit sized compressed texel block
--- representing 4×4 texels (using 4 bits per texel).
---
--- When copying between compressed and uncompressed formats the @extent@
--- members represent the texel dimensions of the source image and not the
--- destination. When copying from a compressed image to an uncompressed
--- image the image texel dimensions written to the uncompressed image will
--- be source extent divided by the compressed texel block dimensions. When
--- copying from an uncompressed image to a compressed image the image texel
--- dimensions written to the compressed image will be the source extent
--- multiplied by the compressed texel block dimensions. In both cases the
--- number of bytes read and the number of bytes written will be identical.
---
--- Copying to or from block-compressed images is typically done in
--- multiples of the compressed texel block size. For this reason the
--- @extent@ /must/ be a multiple of the compressed texel block dimension.
--- There is one exception to this rule which is /required/ to handle
--- compressed images created with dimensions that are not a multiple of the
--- compressed texel block dimensions: if the @srcImage@ is compressed,
--- then:
---
--- -   If @extent.width@ is not a multiple of the compressed texel block
---     width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image
---     subresource width.
---
--- -   If @extent.height@ is not a multiple of the compressed texel block
---     height, then (@extent.height@ + @srcOffset.y@) /must/ equal the
---     image subresource height.
---
--- -   If @extent.depth@ is not a multiple of the compressed texel block
---     depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image
---     subresource depth.
---
--- Similarly, if the @dstImage@ is compressed, then:
---
--- -   If @extent.width@ is not a multiple of the compressed texel block
---     width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image
---     subresource width.
---
--- -   If @extent.height@ is not a multiple of the compressed texel block
---     height, then (@extent.height@ + @dstOffset.y@) /must/ equal the
---     image subresource height.
---
--- -   If @extent.depth@ is not a multiple of the compressed texel block
---     depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image
---     subresource depth.
---
--- This allows the last compressed texel block of the image in each
--- non-multiple dimension to be included as a source or destination of the
--- copy.
---
--- “@_422@” image formats that are not
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
--- are treated as having a 2×1 compressed texel block for the purposes of
--- these rules.
---
--- 'cmdCopyImage' /can/ be used to copy image data between multisample
--- images, but both images /must/ have the same number of samples.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyImage-commandBuffer-01825# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyImage-commandBuffer-01826# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyImage-commandBuffer-01827# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- -   #VUID-vkCmdCopyImage-pRegions-00124# The union of all source
---     regions, and the union of all destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-vkCmdCopyImage-srcImage-01995# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
---
--- -   #VUID-vkCmdCopyImage-srcImage-00126# @srcImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyImage-srcImage-01546# If @srcImage@ is non-sparse
---     then the image or /disjoint/ plane to be copied /must/ be bound
---     completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyImage-srcImageLayout-00128# @srcImageLayout@ /must/
---     specify the layout of the image subresources of @srcImage@ specified
---     in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdCopyImage-srcImageLayout-01917# @srcImageLayout@ /must/
---     be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-vkCmdCopyImage-dstImage-01996# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
---
--- -   #VUID-vkCmdCopyImage-dstImage-00131# @dstImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyImage-dstImage-01547# If @dstImage@ is non-sparse
---     then the image or /disjoint/ plane that is the destination of the
---     copy /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyImage-dstImageLayout-00133# @dstImageLayout@ /must/
---     specify the layout of the image subresources of @dstImage@ specified
---     in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdCopyImage-dstImageLayout-01395# @dstImageLayout@ /must/
---     be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-vkCmdCopyImage-srcImage-01548# If the
---     'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
---     @dstImage@ is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
---     @dstImage@ /must/ be compatible, as defined
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibility above>
---
--- -   #VUID-vkCmdCopyImage-None-01549# In a copy to or from a plane of a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image>,
---     the 'Vulkan.Core10.Enums.Format.Format' of the image and plane
---     /must/ be compatible according to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes>
---     for the plane being copied
---
--- -   #VUID-vkCmdCopyImage-srcImage-00136# The sample count of @srcImage@
---     and @dstImage@ /must/ match
---
--- -   #VUID-vkCmdCopyImage-srcSubresource-01696# The
---     @srcSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-vkCmdCopyImage-dstSubresource-01697# The
---     @dstSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-vkCmdCopyImage-srcSubresource-01698# The
---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-vkCmdCopyImage-dstSubresource-01699# The
---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-vkCmdCopyImage-srcOffset-01783# The @srcOffset@ and @extent@
---     members of each element of @pRegions@ /must/ respect the image
---     transfer granularity requirements of @commandBuffer@’s command
---     pool’s queue family, as described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-vkCmdCopyImage-dstOffset-01784# The @dstOffset@ and @extent@
---     members of each element of @pRegions@ /must/ respect the image
---     transfer granularity requirements of @commandBuffer@’s command
---     pool’s queue family, as described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-vkCmdCopyImage-dstImage-02542# @dstImage@ and @srcImage@
---     /must/ not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-vkCmdCopyImage-srcImage-01551# If neither @srcImage@ nor
---     @dstImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
---     then for each element of @pRegions@, @srcSubresource.aspectMask@ and
---     @dstSubresource.aspectMask@ /must/ match
---
--- -   #VUID-vkCmdCopyImage-srcImage-01552# If @srcImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
---     then for each element of @pRegions@, @srcSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
---
--- -   #VUID-vkCmdCopyImage-srcImage-01553# If @srcImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
---     then for each element of @pRegions@, @srcSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---
--- -   #VUID-vkCmdCopyImage-dstImage-01554# If @dstImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
---     then for each element of @pRegions@, @dstSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
---
--- -   #VUID-vkCmdCopyImage-dstImage-01555# If @dstImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
---     then for each element of @pRegions@, @dstSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---
--- -   #VUID-vkCmdCopyImage-srcImage-01556# If @srcImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
---     and the @dstImage@ does not have a multi-planar image format, then
---     for each element of @pRegions@, @dstSubresource.aspectMask@ /must/
---     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-vkCmdCopyImage-dstImage-01557# If @dstImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
---     and the @srcImage@ does not have a multi-planar image format, then
---     for each element of @pRegions@, @srcSubresource.aspectMask@ /must/
---     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-vkCmdCopyImage-srcImage-04443# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
---     @srcSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-vkCmdCopyImage-dstImage-04444# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
---     @dstSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-vkCmdCopyImage-aspectMask-00142# For each element of
---     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
---     present in @srcImage@
---
--- -   #VUID-vkCmdCopyImage-aspectMask-00143# For each element of
---     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
---     present in @dstImage@
---
--- -   #VUID-vkCmdCopyImage-srcOffset-00144# For each element of
---     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImage-srcOffset-00145# For each element of
---     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImage-srcImage-00146# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@
---     /must/ be @1@
---
--- -   #VUID-vkCmdCopyImage-srcOffset-00147# For each element of
---     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImage-srcImage-01785# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- -   #VUID-vkCmdCopyImage-dstImage-01786# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- -   #VUID-vkCmdCopyImage-srcImage-01787# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffset.z@ /must/ be @0@
---
--- -   #VUID-vkCmdCopyImage-dstImage-01788# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffset.z@ /must/ be @0@
---
--- -   #VUID-vkCmdCopyImage-srcImage-01790# If @srcImage@ and @dstImage@
---     are both of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then
---     for each element of @pRegions@, @extent.depth@ /must/ be @1@
---
--- -   #VUID-vkCmdCopyImage-srcImage-01791# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @dstImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
---     element of @pRegions@, @extent.depth@ /must/ equal
---     @srcSubresource.layerCount@
---
--- -   #VUID-vkCmdCopyImage-dstImage-01792# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @srcImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
---     element of @pRegions@, @extent.depth@ /must/ equal
---     @dstSubresource.layerCount@
---
--- -   #VUID-vkCmdCopyImage-dstOffset-00150# For each element of
---     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyImage-dstOffset-00151# For each element of
---     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyImage-dstImage-00152# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@
---     /must/ be @1@
---
--- -   #VUID-vkCmdCopyImage-dstOffset-00153# For each element of
---     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyImage-srcImage-01727# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, all members of @srcOffset@
---     /must/ be a multiple of the corresponding dimensions of the
---     compressed texel block
---
--- -   #VUID-vkCmdCopyImage-srcImage-01728# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.width@ /must/ be a
---     multiple of the compressed texel block width or (@extent.width@ +
---     @srcOffset.x@) /must/ equal the width of the specified
---     @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImage-srcImage-01729# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.height@ /must/ be a
---     multiple of the compressed texel block height or (@extent.height@ +
---     @srcOffset.y@) /must/ equal the height of the specified
---     @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImage-srcImage-01730# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@extent.depth@ +
---     @srcOffset.z@) /must/ equal the depth of the specified
---     @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImage-dstImage-01731# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, all members of @dstOffset@
---     /must/ be a multiple of the corresponding dimensions of the
---     compressed texel block
---
--- -   #VUID-vkCmdCopyImage-dstImage-01732# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.width@ /must/ be a
---     multiple of the compressed texel block width or (@extent.width@ +
---     @dstOffset.x@) /must/ equal the width of the specified
---     @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyImage-dstImage-01733# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.height@ /must/ be a
---     multiple of the compressed texel block height or (@extent.height@ +
---     @dstOffset.y@) /must/ equal the height of the specified
---     @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyImage-dstImage-01734# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@extent.depth@ +
---     @dstOffset.z@) /must/ equal the depth of the specified
---     @dstSubresource@ of @dstImage@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyImage-commandBuffer-parameter# @commandBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyImage-srcImage-parameter# @srcImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdCopyImage-srcImageLayout-parameter# @srcImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-vkCmdCopyImage-dstImage-parameter# @dstImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdCopyImage-dstImageLayout-parameter# @dstImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-vkCmdCopyImage-pRegions-parameter# @pRegions@ /must/ be a
---     valid pointer to an array of @regionCount@ valid 'ImageCopy'
---     structures
---
--- -   #VUID-vkCmdCopyImage-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-vkCmdCopyImage-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyImage-renderpass# This command /must/ only be called
---     outside of a render pass instance
---
--- -   #VUID-vkCmdCopyImage-regionCount-arraylength# @regionCount@ /must/
---     be greater than @0@
---
--- -   #VUID-vkCmdCopyImage-commonparent# Each of @commandBuffer@,
---     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
--- 'ImageCopy', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
-cmdCopyImage :: forall io
-              . (MonadIO io)
-             => -- | @commandBuffer@ is the command buffer into which the command will be
-                -- recorded.
-                CommandBuffer
-             -> -- | @srcImage@ is the source image.
-                ("srcImage" ::: Image)
-             -> -- | @srcImageLayout@ is the current layout of the source image subresource.
-                ("srcImageLayout" ::: ImageLayout)
-             -> -- | @dstImage@ is the destination image.
-                ("dstImage" ::: Image)
-             -> -- | @dstImageLayout@ is the current layout of the destination image
-                -- subresource.
-                ("dstImageLayout" ::: ImageLayout)
-             -> -- | @pRegions@ is a pointer to an array of 'ImageCopy' structures specifying
-                -- the regions to copy.
-                ("regions" ::: Vector ImageCopy)
-             -> io ()
-cmdCopyImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do
-  let vkCmdCopyImagePtr = pVkCmdCopyImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyImagePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImage is null" Nothing Nothing
-  let vkCmdCopyImage' = mkVkCmdCopyImage vkCmdCopyImagePtr
-  pPRegions <- ContT $ allocaBytes @ImageCopy ((Data.Vector.length (regions)) * 68)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageCopy) (e)) (regions)
-  lift $ traceAroundEvent "vkCmdCopyImage" (vkCmdCopyImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBlitImage
-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()
-
--- | vkCmdBlitImage - Copy regions of an image, potentially performing format
--- conversion,
---
--- = Description
---
--- 'cmdBlitImage' /must/ not be used for multisampled source or destination
--- images. Use 'cmdResolveImage' for this purpose.
---
--- As the sizes of the source and destination extents /can/ differ in any
--- dimension, texels in the source extent are scaled and filtered to the
--- destination extent. Scaling occurs via the following operations:
---
--- -   For each destination texel, the integer coordinate of that texel is
---     converted to an unnormalized texture coordinate, using the effective
---     inverse of the equations described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer unnormalized to integer conversion>:
---
---     -   ubase = i + ½
---
---     -   vbase = j + ½
---
---     -   wbase = k + ½
---
--- -   These base coordinates are then offset by the first destination
---     offset:
---
---     -   uoffset = ubase - xdst0
---
---     -   voffset = vbase - ydst0
---
---     -   woffset = wbase - zdst0
---
---     -   aoffset = a - @baseArrayCount@dst
---
--- -   The scale is determined from the source and destination regions, and
---     applied to the offset coordinates:
---
---     -   scaleu = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)
---
---     -   scalev = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)
---
---     -   scalew = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)
---
---     -   uscaled = uoffset × scaleu
---
---     -   vscaled = voffset × scalev
---
---     -   wscaled = woffset × scalew
---
--- -   Finally the source offset is added to the scaled coordinates, to
---     determine the final unnormalized coordinates used to sample from
---     @srcImage@:
---
---     -   u = uscaled + xsrc0
---
---     -   v = vscaled + ysrc0
---
---     -   w = wscaled + zsrc0
---
---     -   q = @mipLevel@
---
---     -   a = aoffset + @baseArrayCount@src
---
--- These coordinates are used to sample from the source image, as described
--- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations chapter>,
--- with the filter mode equal to that of @filter@, a mipmap mode of
--- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST' and
--- an address mode of
--- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.
--- Implementations /must/ clamp at the edge of the source image, and /may/
--- additionally clamp to the edge of the source region.
---
--- Note
---
--- Due to allowable rounding errors in the generation of the source texture
--- coordinates, it is not always possible to guarantee exactly which source
--- texels will be sampled for a given blit. As rounding errors are
--- implementation-dependent, the exact results of a blitting operation are
--- also implementation-dependent.
---
--- Blits are done layer by layer starting with the @baseArrayLayer@ member
--- of @srcSubresource@ for the source and @dstSubresource@ for the
--- destination. @layerCount@ layers are blitted to the destination image.
---
--- When blitting 3D textures, slices in the destination region bounded by
--- @dstOffsets@[0].z and @dstOffsets@[1].z are sampled from slices in the
--- source region bounded by @srcOffsets@[0].z and @srcOffsets@[1].z. If the
--- @filter@ parameter is 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' then
--- the value sampled from the source image is taken by doing linear
--- filtering using the interpolated __z__ coordinate represented by __w__
--- in the previous equations. If the @filter@ parameter is
--- 'Vulkan.Core10.Enums.Filter.FILTER_NEAREST' then the value sampled from
--- the source image is taken from the single nearest slice, with an
--- implementation-dependent arithmetic rounding mode.
---
--- The following filtering and conversion rules apply:
---
--- -   Integer formats /can/ only be converted to other integer formats
---     with the same signedness.
---
--- -   No format conversion is supported between depth\/stencil images. The
---     formats /must/ match.
---
--- -   Format conversions on unorm, snorm, unscaled and packed float
---     formats of the copied aspect of the image are performed by first
---     converting the pixels to float values.
---
--- -   For sRGB source formats, nonlinear RGB values are converted to
---     linear representation prior to filtering.
---
--- -   After filtering, the float values are first clamped and then cast to
---     the destination image format. In case of sRGB destination format,
---     linear RGB values are converted to nonlinear representation before
---     writing the pixel to the image.
---
--- Signed and unsigned integers are converted by first clamping to the
--- representable range of the destination format, then casting the value.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBlitImage-commandBuffer-01834# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdBlitImage-commandBuffer-01835# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdBlitImage-commandBuffer-01836# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- -   #VUID-vkCmdBlitImage-pRegions-00215# The source region specified by
---     each element of @pRegions@ /must/ be a region that is contained
---     within @srcImage@
---
--- -   #VUID-vkCmdBlitImage-pRegions-00216# The destination region
---     specified by each element of @pRegions@ /must/ be a region that is
---     contained within @dstImage@
---
--- -   #VUID-vkCmdBlitImage-pRegions-00217# The union of all destination
---     regions, specified by the elements of @pRegions@, /must/ not overlap
---     in memory with any texel that /may/ be sampled during the blit
---     operation
---
--- -   #VUID-vkCmdBlitImage-srcImage-01999# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
---
--- -   #VUID-vkCmdBlitImage-srcImage-06421# @srcImage@ /must/ not use a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
---
--- -   #VUID-vkCmdBlitImage-srcImage-00219# @srcImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-vkCmdBlitImage-srcImage-00220# If @srcImage@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBlitImage-srcImageLayout-00221# @srcImageLayout@ /must/
---     specify the layout of the image subresources of @srcImage@ specified
---     in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdBlitImage-srcImageLayout-01398# @srcImageLayout@ /must/
---     be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-vkCmdBlitImage-dstImage-02000# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'
---
--- -   #VUID-vkCmdBlitImage-dstImage-06422# @dstImage@ /must/ not use a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
---
--- -   #VUID-vkCmdBlitImage-dstImage-00224# @dstImage@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdBlitImage-dstImage-00225# If @dstImage@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBlitImage-dstImageLayout-00226# @dstImageLayout@ /must/
---     specify the layout of the image subresources of @dstImage@ specified
---     in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdBlitImage-dstImageLayout-01399# @dstImageLayout@ /must/
---     be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-vkCmdBlitImage-srcImage-00229# If either of @srcImage@ or
---     @dstImage@ was created with a signed integer
---     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
---     created with a signed integer 'Vulkan.Core10.Enums.Format.Format'
---
--- -   #VUID-vkCmdBlitImage-srcImage-00230# If either of @srcImage@ or
---     @dstImage@ was created with an unsigned integer
---     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
---     created with an unsigned integer 'Vulkan.Core10.Enums.Format.Format'
---
--- -   #VUID-vkCmdBlitImage-srcImage-00231# If either of @srcImage@ or
---     @dstImage@ was created with a depth\/stencil format, the other
---     /must/ have exactly the same format
---
--- -   #VUID-vkCmdBlitImage-srcImage-00232# If @srcImage@ was created with
---     a depth\/stencil format, @filter@ /must/ be
---     'Vulkan.Core10.Enums.Filter.FILTER_NEAREST'
---
--- -   #VUID-vkCmdBlitImage-srcImage-00233# @srcImage@ /must/ have been
---     created with a @samples@ value of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-vkCmdBlitImage-dstImage-00234# @dstImage@ /must/ have been
---     created with a @samples@ value of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-vkCmdBlitImage-filter-02001# If @filter@ is
---     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-vkCmdBlitImage-filter-02002# If @filter@ is
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-vkCmdBlitImage-filter-00237# If @filter@ is
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', @srcImage@
---     /must/ be of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
---
--- -   #VUID-vkCmdBlitImage-srcSubresource-01705# The
---     @srcSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-vkCmdBlitImage-dstSubresource-01706# The
---     @dstSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-vkCmdBlitImage-srcSubresource-01707# The
---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-vkCmdBlitImage-dstSubresource-01708# The
---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-vkCmdBlitImage-dstImage-02545# @dstImage@ and @srcImage@
---     /must/ not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-vkCmdBlitImage-srcImage-00240# If either @srcImage@ or
---     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
---     then for each element of @pRegions@, @srcSubresource.baseArrayLayer@
---     and @dstSubresource.baseArrayLayer@ /must/ each be @0@, and
---     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/
---     each be @1@
---
--- -   #VUID-vkCmdBlitImage-aspectMask-00241# For each element of
---     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
---     present in @srcImage@
---
--- -   #VUID-vkCmdBlitImage-aspectMask-00242# For each element of
---     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
---     present in @dstImage@
---
--- -   #VUID-vkCmdBlitImage-srcOffset-00243# For each element of
---     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be
---     greater than or equal to @0@ and less than or equal to the width of
---     the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdBlitImage-srcOffset-00244# For each element of
---     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be
---     greater than or equal to @0@ and less than or equal to the height of
---     the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdBlitImage-srcImage-00245# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y
---     /must/ be @1@
---
--- -   #VUID-vkCmdBlitImage-srcOffset-00246# For each element of
---     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be
---     greater than or equal to @0@ and less than or equal to the depth of
---     the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdBlitImage-srcImage-00247# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z
---     /must/ be @1@
---
--- -   #VUID-vkCmdBlitImage-dstOffset-00248# For each element of
---     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be
---     greater than or equal to @0@ and less than or equal to the width of
---     the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdBlitImage-dstOffset-00249# For each element of
---     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be
---     greater than or equal to @0@ and less than or equal to the height of
---     the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdBlitImage-dstImage-00250# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y
---     /must/ be @1@
---
--- -   #VUID-vkCmdBlitImage-dstOffset-00251# For each element of
---     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be
---     greater than or equal to @0@ and less than or equal to the depth of
---     the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdBlitImage-dstImage-00252# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z
---     /must/ be @1@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBlitImage-commandBuffer-parameter# @commandBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBlitImage-srcImage-parameter# @srcImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdBlitImage-srcImageLayout-parameter# @srcImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-vkCmdBlitImage-dstImage-parameter# @dstImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdBlitImage-dstImageLayout-parameter# @dstImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-vkCmdBlitImage-pRegions-parameter# @pRegions@ /must/ be a
---     valid pointer to an array of @regionCount@ valid 'ImageBlit'
---     structures
---
--- -   #VUID-vkCmdBlitImage-filter-parameter# @filter@ /must/ be a valid
---     'Vulkan.Core10.Enums.Filter.Filter' value
---
--- -   #VUID-vkCmdBlitImage-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-vkCmdBlitImage-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBlitImage-renderpass# This command /must/ only be called
---     outside of a render pass instance
---
--- -   #VUID-vkCmdBlitImage-regionCount-arraylength# @regionCount@ /must/
---     be greater than @0@
---
--- -   #VUID-vkCmdBlitImage-commonparent# Each of @commandBuffer@,
---     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.Filter.Filter', 'Vulkan.Core10.Handles.Image',
--- 'ImageBlit', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
-cmdBlitImage :: forall io
-              . (MonadIO io)
-             => -- | @commandBuffer@ is the command buffer into which the command will be
-                -- recorded.
-                CommandBuffer
-             -> -- | @srcImage@ is the source image.
-                ("srcImage" ::: Image)
-             -> -- | @srcImageLayout@ is the layout of the source image subresources for the
-                -- blit.
-                ("srcImageLayout" ::: ImageLayout)
-             -> -- | @dstImage@ is the destination image.
-                ("dstImage" ::: Image)
-             -> -- | @dstImageLayout@ is the layout of the destination image subresources for
-                -- the blit.
-                ("dstImageLayout" ::: ImageLayout)
-             -> -- | @pRegions@ is a pointer to an array of 'ImageBlit' structures specifying
-                -- the regions to blit.
-                ("regions" ::: Vector ImageBlit)
-             -> -- | @filter@ is a 'Vulkan.Core10.Enums.Filter.Filter' specifying the filter
-                -- to apply if the blits require scaling.
-                Filter
-             -> io ()
-cmdBlitImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions filter' = liftIO . evalContT $ do
-  let vkCmdBlitImagePtr = pVkCmdBlitImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBlitImagePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBlitImage is null" Nothing Nothing
-  let vkCmdBlitImage' = mkVkCmdBlitImage vkCmdBlitImagePtr
-  pPRegions <- ContT $ allocaBytes @ImageBlit ((Data.Vector.length (regions)) * 80)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (80 * (i)) :: Ptr ImageBlit) (e)) (regions)
-  lift $ traceAroundEvent "vkCmdBlitImage" (vkCmdBlitImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions) (filter'))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyBufferToImage
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()
-
--- | vkCmdCopyBufferToImage - Copy data from a buffer into an image
---
--- = Description
---
--- Each region in @pRegions@ is copied from the specified region of the
--- source buffer to the specified region of the destination image.
---
--- If @dstImage@ has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
--- regions of each plane to be a target of a copy /must/ be specified
--- separately using the @pRegions@ member of the 'BufferImageCopy'
--- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/
--- be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'. For
--- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar
--- image is treated as having the format listed in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>
--- for the plane identified by the @aspectMask@ of the corresponding
--- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'
--- and to coordinates used in the copy, which correspond to texels in the
--- /plane/ rather than how these texels map to coordinates in the image as
--- a whole.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01828# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01829# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01830# If @commandBuffer@
---     is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-06217# The image region
---     specified by each element of @pRegions@ /must/ be contained within
---     the specified @imageSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-00171# @srcBuffer@ /must/ be
---     large enough to contain all buffer locations that are accessed
---     according to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
---     for each element of @pRegions@
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-00173# The union of all source
---     regions, and the union of all destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00174# @srcBuffer@ /must/
---     have been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImage-01997# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
---
--- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00176# If @srcBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImage-00177# @dstImage@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImage-00178# If @dstImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImage-00179# @dstImage@ /must/ have
---     a sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-00180# @dstImageLayout@
---     /must/ specify the layout of the image subresources of @dstImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-01396# @dstImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01701# The
---     @imageSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01702# The
---     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-vkCmdCopyBufferToImage-imageOffset-01793# The @imageOffset@
---     and @imageExtent@ members of each element of @pRegions@ /must/
---     respect the image transfer granularity requirements of
---     @commandBuffer@’s command pool’s queue family, as described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImage-02543# @dstImage@ /must/ not
---     have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04477# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each
---     element of @pRegions@, the @aspectMask@ member of @imageSubresource@
---     /must/ not be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-06218# For each element of
---     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ +
---     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the width of the specified @imageSubresource@
---     of @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-06219# For each element of
---     @pRegions@, @imageOffset.y@ and (@imageExtent.height@ +
---     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the height of the specified @imageSubresource@
---     of @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-bufferOffset-01558# If @dstImage@ does
---     not have either a depth\/stencil or a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the format’s texel block size
---
--- -   #VUID-vkCmdCopyBufferToImage-bufferOffset-01559# If @dstImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the element size of the compatible format for the format
---     and the @aspectMask@ of the @imageSubresource@ as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
---
--- -   #VUID-vkCmdCopyBufferToImage-srcImage-00199# If @dstImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
---     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
---     @imageExtent.height@ /must/ be @1@
---
--- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00200# For each element of
---     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
---     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the depth of the specified @imageSubresource@
---     of @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-srcImage-00201# If @dstImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
---     /must/ be @1@
---
--- -   #VUID-vkCmdCopyBufferToImage-bufferRowLength-00203# If @dstImage@ is
---     a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ /must/ be a
---     multiple of the compressed texel block width
---
--- -   #VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204# If @dstImage@
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
---     multiple of the compressed texel block height
---
--- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00205# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, all members of @imageOffset@ /must/
---     be a multiple of the corresponding dimensions of the compressed
---     texel block
---
--- -   #VUID-vkCmdCopyBufferToImage-bufferOffset-00206# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
---     of the compressed texel block size in bytes
---
--- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00207# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.width@ /must/ be a
---     multiple of the compressed texel block width or (@imageExtent.width@
---     + @imageOffset.x@) /must/ equal the width of the specified
---     @imageSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00208# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.height@ /must/ be a
---     multiple of the compressed texel block height or
---     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
---     the specified @imageSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00209# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@imageExtent.depth@
---     + @imageOffset.z@) /must/ equal the depth of the specified
---     @imageSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-aspectMask-00211# For each element of
---     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
---     present in @dstImage@
---
--- -   #VUID-vkCmdCopyBufferToImage-aspectMask-01560# If @dstImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @imageSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     (with
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     valid only for image formats with three planes)
---
--- -   #VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213# If @dstImage@ is
---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
---     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be
---     @0@ and @imageSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-04725# If @dstImage@ is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ multiplied by the
---     texel block size of @dstImage@ /must/ be less than or equal to 231-1
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-04726# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ divided by the
---     compressed texel block width and then multiplied by the texel block
---     size of @dstImage@ /must/ be less than or equal to 231-1
---
--- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04052# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
---     @bufferOffset@ member of any element of @pRegions@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdCopyBufferToImage-srcImage-04053# If @dstImage@ has a
---     depth\/stencil format, the @bufferOffset@ member of any element of
---     @pRegions@ /must/ be a multiple of @4@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-parameter# @srcBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImage-parameter# @dstImage@ /must/
---     be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter#
---     @dstImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-vkCmdCopyBufferToImage-pRegions-parameter# @pRegions@ /must/
---     be a valid pointer to an array of @regionCount@ valid
---     'BufferImageCopy' structures
---
--- -   #VUID-vkCmdCopyBufferToImage-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-vkCmdCopyBufferToImage-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyBufferToImage-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyBufferToImage-regionCount-arraylength# @regionCount@
---     /must/ be greater than @0@
---
--- -   #VUID-vkCmdCopyBufferToImage-commonparent# Each of @commandBuffer@,
---     @dstImage@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
-cmdCopyBufferToImage :: forall io
-                      . (MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer into which the command will be
-                        -- recorded.
-                        CommandBuffer
-                     -> -- | @srcBuffer@ is the source buffer.
-                        ("srcBuffer" ::: Buffer)
-                     -> -- | @dstImage@ is the destination image.
-                        ("dstImage" ::: Image)
-                     -> -- | @dstImageLayout@ is the layout of the destination image subresources for
-                        -- the copy.
-                        ("dstImageLayout" ::: ImageLayout)
-                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures
-                        -- specifying the regions to copy.
-                        ("regions" ::: Vector BufferImageCopy)
-                     -> io ()
-cmdCopyBufferToImage commandBuffer srcBuffer dstImage dstImageLayout regions = liftIO . evalContT $ do
-  let vkCmdCopyBufferToImagePtr = pVkCmdCopyBufferToImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyBufferToImagePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBufferToImage is null" Nothing Nothing
-  let vkCmdCopyBufferToImage' = mkVkCmdCopyBufferToImage vkCmdCopyBufferToImagePtr
-  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)
-  lift $ traceAroundEvent "vkCmdCopyBufferToImage" (vkCmdCopyBufferToImage' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyImageToBuffer
-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()
-
--- | vkCmdCopyImageToBuffer - Copy image data into a buffer
---
--- = Description
---
--- Each region in @pRegions@ is copied from the specified region of the
--- source image to the specified region of the destination buffer.
---
--- If @srcImage@ has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
--- regions of each plane to be a source of a copy /must/ be specified
--- separately using the @pRegions@ member of the 'BufferImageCopy'
--- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/
--- be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'. For
--- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar
--- image is treated as having the format listed in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>
--- for the plane identified by the @aspectMask@ of the corresponding
--- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'
--- and to coordinates used in the copy, which correspond to texels in the
--- /plane/ rather than how these texels map to coordinates in the image as
--- a whole.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01831# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01832# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01833# If @commandBuffer@
---     is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06220# The image region
---     specified by each element of @pRegions@ /must/ be contained within
---     the specified @imageSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-00183# @dstBuffer@ /must/ be
---     large enough to contain all buffer locations that are accessed
---     according to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
---     for each element of @pRegions@
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-00184# The union of all source
---     regions, and the union of all destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00186# @srcImage@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-01998# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00187# If @srcImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00191# @dstBuffer@ /must/
---     have been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00192# If @dstBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00188# @srcImage@ /must/ have
---     a sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189# @srcImageLayout@
---     /must/ specify the layout of the image subresources of @srcImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397# @srcImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01703# The
---     @imageSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01704# The
---     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-01794# The @imageOffset@
---     and @imageExtent@ members of each element of @pRegions@ /must/
---     respect the image transfer granularity requirements of
---     @commandBuffer@’s command pool’s queue family, as described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-02544# @srcImage@ /must/ not
---     have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06221# For each element of
---     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ +
---     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the width of the specified @imageSubresource@
---     of @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06222# For each element of
---     @pRegions@, @imageOffset.y@ and (imageExtent.height +
---     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the height of the specified @imageSubresource@
---     of @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-01558# If @srcImage@ does
---     not have either a depth\/stencil or a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the format’s texel block size
---
--- -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-01559# If @srcImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the element size of the compatible format for the format
---     and the @aspectMask@ of the @imageSubresource@ as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00199# If @srcImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
---     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
---     @imageExtent.height@ /must/ be @1@
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00200# For each element of
---     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
---     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the depth of the specified @imageSubresource@
---     of @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00201# If @srcImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
---     /must/ be @1@
---
--- -   #VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203# If @srcImage@ is
---     a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ /must/ be a
---     multiple of the compressed texel block width
---
--- -   #VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204# If @srcImage@
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
---     multiple of the compressed texel block height
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00205# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, all members of @imageOffset@ /must/
---     be a multiple of the corresponding dimensions of the compressed
---     texel block
---
--- -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-00206# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
---     of the compressed texel block size in bytes
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00207# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.width@ /must/ be a
---     multiple of the compressed texel block width or (@imageExtent.width@
---     + @imageOffset.x@) /must/ equal the width of the specified
---     @imageSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00208# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.height@ /must/ be a
---     multiple of the compressed texel block height or
---     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
---     the specified @imageSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00209# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@imageExtent.depth@
---     + @imageOffset.z@) /must/ equal the depth of the specified
---     @imageSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-aspectMask-00211# For each element of
---     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
---     present in @srcImage@
---
--- -   #VUID-vkCmdCopyImageToBuffer-aspectMask-01560# If @srcImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @imageSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     (with
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     valid only for image formats with three planes)
---
--- -   #VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213# If @srcImage@ is
---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
---     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be
---     @0@ and @imageSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-04725# If @srcImage@ is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ multiplied by the
---     texel block size of @srcImage@ /must/ be less than or equal to 231-1
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-04726# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ divided by the
---     compressed texel block width and then multiplied by the texel block
---     size of @srcImage@ /must/ be less than or equal to 231-1
---
--- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-04052# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
---     @bufferOffset@ member of any element of @pRegions@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-04053# If @srcImage@ has a
---     depth\/stencil format, the @bufferOffset@ member of any element of
---     @pRegions@ /must/ be a multiple of @4@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImage-parameter# @srcImage@ /must/
---     be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter#
---     @srcImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter# @dstBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdCopyImageToBuffer-pRegions-parameter# @pRegions@ /must/
---     be a valid pointer to an array of @regionCount@ valid
---     'BufferImageCopy' structures
---
--- -   #VUID-vkCmdCopyImageToBuffer-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-vkCmdCopyImageToBuffer-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyImageToBuffer-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyImageToBuffer-regionCount-arraylength# @regionCount@
---     /must/ be greater than @0@
---
--- -   #VUID-vkCmdCopyImageToBuffer-commonparent# Each of @commandBuffer@,
---     @dstBuffer@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
-cmdCopyImageToBuffer :: forall io
-                      . (MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer into which the command will be
-                        -- recorded.
-                        CommandBuffer
-                     -> -- | @srcImage@ is the source image.
-                        ("srcImage" ::: Image)
-                     -> -- | @srcImageLayout@ is the layout of the source image subresources for the
-                        -- copy.
-                        ("srcImageLayout" ::: ImageLayout)
-                     -> -- | @dstBuffer@ is the destination buffer.
-                        ("dstBuffer" ::: Buffer)
-                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures
-                        -- specifying the regions to copy.
-                        ("regions" ::: Vector BufferImageCopy)
-                     -> io ()
-cmdCopyImageToBuffer commandBuffer srcImage srcImageLayout dstBuffer regions = liftIO . evalContT $ do
-  let vkCmdCopyImageToBufferPtr = pVkCmdCopyImageToBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyImageToBufferPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImageToBuffer is null" Nothing Nothing
-  let vkCmdCopyImageToBuffer' = mkVkCmdCopyImageToBuffer vkCmdCopyImageToBufferPtr
-  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)
-  lift $ traceAroundEvent "vkCmdCopyImageToBuffer" (vkCmdCopyImageToBuffer' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdUpdateBuffer
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()
-
--- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory
---
--- = Description
---
--- @dataSize@ /must/ be less than or equal to 65536 bytes. For larger
--- updates, applications /can/ use buffer to buffer
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers copies>.
---
--- Note
---
--- Buffer updates performed with 'cmdUpdateBuffer' first copy the data into
--- command buffer memory when the command is recorded (which requires
--- additional storage and may incur an additional allocation), and then
--- copy the data from the command buffer into @dstBuffer@ when the command
--- is executed on a device.
---
--- The additional cost of this functionality compared to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers buffer to buffer copies>
--- means it is only recommended for very small amounts of data, and is why
--- it is limited to only 65536 bytes.
---
--- Applications /can/ work around this by issuing multiple
--- 'cmdUpdateBuffer' commands to different ranges of the same buffer, but
--- it is strongly recommended that they /should/ not.
---
--- The source data is copied from the user pointer to the command buffer
--- when the command is called.
---
--- 'cmdUpdateBuffer' is only allowed outside of a render pass. This command
--- is treated as “transfer” operation, for the purposes of synchronization
--- barriers. The
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
--- /must/ be specified in @usage@ of
--- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be
--- compatible with 'cmdUpdateBuffer'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdUpdateBuffer-dstOffset-00032# @dstOffset@ /must/ be less
---     than the size of @dstBuffer@
---
--- -   #VUID-vkCmdUpdateBuffer-dataSize-00033# @dataSize@ /must/ be less
---     than or equal to the size of @dstBuffer@ minus @dstOffset@
---
--- -   #VUID-vkCmdUpdateBuffer-dstBuffer-00034# @dstBuffer@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdUpdateBuffer-dstBuffer-00035# If @dstBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdUpdateBuffer-dstOffset-00036# @dstOffset@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdUpdateBuffer-dataSize-00037# @dataSize@ /must/ be less
---     than or equal to @65536@
---
--- -   #VUID-vkCmdUpdateBuffer-dataSize-00038# @dataSize@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdUpdateBuffer-commandBuffer-01813# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdUpdateBuffer-commandBuffer-01814# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdUpdateBuffer-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdUpdateBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdUpdateBuffer-pData-parameter# @pData@ /must/ be a valid
---     pointer to an array of @dataSize@ bytes
---
--- -   #VUID-vkCmdUpdateBuffer-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-vkCmdUpdateBuffer-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdUpdateBuffer-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdUpdateBuffer-dataSize-arraylength# @dataSize@ /must/ be
---     greater than @0@
---
--- -   #VUID-vkCmdUpdateBuffer-commonparent# Both of @commandBuffer@, and
---     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdUpdateBuffer :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command will be
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @dstBuffer@ is a handle to the buffer to be updated.
-                   ("dstBuffer" ::: Buffer)
-                -> -- | @dstOffset@ is the byte offset into the buffer to start updating, and
-                   -- /must/ be a multiple of 4.
-                   ("dstOffset" ::: DeviceSize)
-                -> -- | @dataSize@ is the number of bytes to update, and /must/ be a multiple of
-                   -- 4.
-                   ("dataSize" ::: DeviceSize)
-                -> -- | @pData@ is a pointer to the source data for the buffer update, and
-                   -- /must/ be at least @dataSize@ bytes in size.
-                   ("data" ::: Ptr ())
-                -> io ()
-cmdUpdateBuffer commandBuffer dstBuffer dstOffset dataSize data' = liftIO $ do
-  let vkCmdUpdateBufferPtr = pVkCmdUpdateBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdUpdateBufferPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdUpdateBuffer is null" Nothing Nothing
-  let vkCmdUpdateBuffer' = mkVkCmdUpdateBuffer vkCmdUpdateBufferPtr
-  traceAroundEvent "vkCmdUpdateBuffer" (vkCmdUpdateBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (dataSize) (data'))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdFillBuffer
-  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()
-
--- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value
---
--- = Description
---
--- 'cmdFillBuffer' is treated as “transfer” operation for the purposes of
--- synchronization barriers. The
--- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
--- /must/ be specified in @usage@ of
--- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be
--- compatible with 'cmdFillBuffer'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdFillBuffer-dstOffset-00024# @dstOffset@ /must/ be less
---     than the size of @dstBuffer@
---
--- -   #VUID-vkCmdFillBuffer-dstOffset-00025# @dstOffset@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-vkCmdFillBuffer-size-00026# If @size@ is not equal to
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater
---     than @0@
---
--- -   #VUID-vkCmdFillBuffer-size-00027# If @size@ is not equal to
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less than
---     or equal to the size of @dstBuffer@ minus @dstOffset@
---
--- -   #VUID-vkCmdFillBuffer-size-00028# If @size@ is not equal to
---     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a multiple
---     of @4@
---
--- -   #VUID-vkCmdFillBuffer-dstBuffer-00029# @dstBuffer@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdFillBuffer-dstBuffer-00031# If @dstBuffer@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdFillBuffer-commandBuffer-01811# If @commandBuffer@ is an
---     unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdFillBuffer-commandBuffer-01812# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdFillBuffer-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdFillBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdFillBuffer-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-vkCmdFillBuffer-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics or compute
---     operations
---
--- -   #VUID-vkCmdFillBuffer-renderpass# This command /must/ only be called
---     outside of a render pass instance
---
--- -   #VUID-vkCmdFillBuffer-commonparent# Both of @commandBuffer@, and
---     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdFillBuffer :: forall io
-               . (MonadIO io)
-              => -- | @commandBuffer@ is the command buffer into which the command will be
-                 -- recorded.
-                 CommandBuffer
-              -> -- | @dstBuffer@ is the buffer to be filled.
-                 ("dstBuffer" ::: Buffer)
-              -> -- | @dstOffset@ is the byte offset into the buffer at which to start
-                 -- filling, and /must/ be a multiple of 4.
-                 ("dstOffset" ::: DeviceSize)
-              -> -- | @size@ is the number of bytes to fill, and /must/ be either a multiple
-                 -- of 4, or 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to fill the range from
-                 -- @offset@ to the end of the buffer. If
-                 -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE' is used and the remaining size
-                 -- of the buffer is not a multiple of 4, then the nearest smaller multiple
-                 -- is used.
-                 DeviceSize
-              -> -- | @data@ is the 4-byte word written repeatedly to the buffer to fill
-                 -- @size@ bytes of data. The data word is written to memory according to
-                 -- the host endianness.
-                 ("data" ::: Word32)
-              -> io ()
-cmdFillBuffer commandBuffer dstBuffer dstOffset size data' = liftIO $ do
-  let vkCmdFillBufferPtr = pVkCmdFillBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdFillBufferPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdFillBuffer is null" Nothing Nothing
-  let vkCmdFillBuffer' = mkVkCmdFillBuffer vkCmdFillBufferPtr
-  traceAroundEvent "vkCmdFillBuffer" (vkCmdFillBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (size) (data'))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdClearColorImage
-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()
-
--- | vkCmdClearColorImage - Clear regions of a color image
---
--- = Description
---
--- Each specified range in @pRanges@ is cleared to the value specified by
--- @pColor@.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdClearColorImage-image-01993# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @image@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
---
--- -   #VUID-vkCmdClearColorImage-image-00002# @image@ /must/ have been
---     created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdClearColorImage-image-01545# @image@ /must/ not use any
---     of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>
---
--- -   #VUID-vkCmdClearColorImage-image-00003# If @image@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdClearColorImage-imageLayout-00004# @imageLayout@ /must/
---     specify the layout of the image subresource ranges of @image@
---     specified in @pRanges@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdClearColorImage-imageLayout-01394# @imageLayout@ /must/
---     be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-vkCmdClearColorImage-aspectMask-02498# The
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@
---     members of the elements of the @pRanges@ array /must/ each only
---     include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-vkCmdClearColorImage-baseMipLevel-01470# The
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@
---     members of the elements of the @pRanges@ array /must/ each be less
---     than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
---
--- -   #VUID-vkCmdClearColorImage-pRanges-01692# For each
---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
---     @pRanges@, if the @levelCount@ member is not
---     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then
---     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@
---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
---     created
---
--- -   #VUID-vkCmdClearColorImage-baseArrayLayer-01472# The
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@
---     members of the elements of the @pRanges@ array /must/ each be less
---     than the @arrayLayers@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
---
--- -   #VUID-vkCmdClearColorImage-pRanges-01693# For each
---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
---     @pRanges@, if the @layerCount@ member is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then
---     @baseArrayLayer@ + @layerCount@ /must/ be less than the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @image@ was created
---
--- -   #VUID-vkCmdClearColorImage-image-00007# @image@ /must/ not have a
---     compressed or depth\/stencil format
---
--- -   #VUID-vkCmdClearColorImage-pColor-04961# @pColor@ /must/ be a valid
---     pointer to a 'ClearColorValue' union
---
--- -   #VUID-vkCmdClearColorImage-commandBuffer-01805# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @image@ /must/ not be a protected image
---
--- -   #VUID-vkCmdClearColorImage-commandBuffer-01806# If @commandBuffer@
---     is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, /must/ not be an unprotected image
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdClearColorImage-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdClearColorImage-image-parameter# @image@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdClearColorImage-imageLayout-parameter# @imageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-vkCmdClearColorImage-pRanges-parameter# @pRanges@ /must/ be a
---     valid pointer to an array of @rangeCount@ valid
---     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures
---
--- -   #VUID-vkCmdClearColorImage-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-vkCmdClearColorImage-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdClearColorImage-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdClearColorImage-rangeCount-arraylength# @rangeCount@
---     /must/ be greater than @0@
---
--- -   #VUID-vkCmdClearColorImage-commonparent# Both of @commandBuffer@,
---     and @image@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ClearColorValue', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.ImageView.ImageSubresourceRange'
-cmdClearColorImage :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer into which the command will be
-                      -- recorded.
-                      CommandBuffer
-                   -> -- | @image@ is the image to be cleared.
-                      Image
-                   -> -- | @imageLayout@ specifies the current layout of the image subresource
-                      -- ranges to be cleared, and /must/ be
-                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
-                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
-                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.
-                      ImageLayout
-                   -> -- | @pColor@ is a pointer to a 'ClearColorValue' structure containing the
-                      -- values that the image subresource ranges will be cleared to (see
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>
-                      -- below).
-                      ClearColorValue
-                   -> -- | @pRanges@ is a pointer to an array of
-                      -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a
-                      -- range of mipmap levels, array layers, and aspects to be cleared, as
-                      -- described in
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.
-                      ("ranges" ::: Vector ImageSubresourceRange)
-                   -> io ()
-cmdClearColorImage commandBuffer image imageLayout color ranges = liftIO . evalContT $ do
-  let vkCmdClearColorImagePtr = pVkCmdClearColorImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdClearColorImagePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearColorImage is null" Nothing Nothing
-  let vkCmdClearColorImage' = mkVkCmdClearColorImage vkCmdClearColorImagePtr
-  pColor <- ContT $ withCStruct (color)
-  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)
-  lift $ traceAroundEvent "vkCmdClearColorImage" (vkCmdClearColorImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pColor ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdClearDepthStencilImage
-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()
-
--- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil
--- image
---
--- == Valid Usage
---
--- -   #VUID-vkCmdClearDepthStencilImage-image-01994# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @image@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
---
--- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02658# If the @aspect@
---     member of any element of @pRanges@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
---     and @image@ was created with
---     <VkImageStencilUsageCreateInfo.html separate stencil usage>,
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     /must/ have been included in the
---     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@
---     used to create @image@
---
--- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02659# If the @aspect@
---     member of any element of @pRanges@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
---     and @image@ was not created with
---     <VkImageStencilUsageCreateInfo.html separate stencil usage>,
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     /must/ have been included in the
---     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create
---     @image@
---
--- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02660# If the @aspect@
---     member of any element of @pRanges@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     /must/ have been included in the
---     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create
---     @image@
---
--- -   #VUID-vkCmdClearDepthStencilImage-image-00010# If @image@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00011# @imageLayout@
---     /must/ specify the layout of the image subresource ranges of @image@
---     specified in @pRanges@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00012# @imageLayout@
---     /must/ be either of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-vkCmdClearDepthStencilImage-aspectMask-02824# The
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
---     of each element of the @pRanges@ array /must/ not include bits other
---     than
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-vkCmdClearDepthStencilImage-image-02825# If the @image@’s
---     format does not have a stencil component, then the
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
---     of each element of the @pRanges@ array /must/ not include the
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---     bit
---
--- -   #VUID-vkCmdClearDepthStencilImage-image-02826# If the @image@’s
---     format does not have a depth component, then the
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
---     of each element of the @pRanges@ array /must/ not include the
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' bit
---
--- -   #VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474# The
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@
---     members of the elements of the @pRanges@ array /must/ each be less
---     than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
---
--- -   #VUID-vkCmdClearDepthStencilImage-pRanges-01694# For each
---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
---     @pRanges@, if the @levelCount@ member is not
---     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then
---     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@
---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
---     created
---
--- -   #VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476# The
---     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@
---     members of the elements of the @pRanges@ array /must/ each be less
---     than the @arrayLayers@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
---
--- -   #VUID-vkCmdClearDepthStencilImage-pRanges-01695# For each
---     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
---     @pRanges@, if the @layerCount@ member is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then
---     @baseArrayLayer@ + @layerCount@ /must/ be less than the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @image@ was created
---
--- -   #VUID-vkCmdClearDepthStencilImage-image-00014# @image@ /must/ have a
---     depth\/stencil format
---
--- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01807# If
---     @commandBuffer@ is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @image@ /must/ not be a protected image
---
--- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01808# If
---     @commandBuffer@ is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @image@ /must/ not be an unprotected image
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdClearDepthStencilImage-image-parameter# @image@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-parameter#
---     @imageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter#
---     @pDepthStencil@ /must/ be a valid pointer to a valid
---     'ClearDepthStencilValue' structure
---
--- -   #VUID-vkCmdClearDepthStencilImage-pRanges-parameter# @pRanges@
---     /must/ be a valid pointer to an array of @rangeCount@ valid
---     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures
---
--- -   #VUID-vkCmdClearDepthStencilImage-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-vkCmdClearDepthStencilImage-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdClearDepthStencilImage-renderpass# This command /must/
---     only be called outside of a render pass instance
---
--- -   #VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength#
---     @rangeCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdClearDepthStencilImage-commonparent# Both of
---     @commandBuffer@, and @image@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ClearDepthStencilValue', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.ImageView.ImageSubresourceRange'
-cmdClearDepthStencilImage :: forall io
-                           . (MonadIO io)
-                          => -- | @commandBuffer@ is the command buffer into which the command will be
-                             -- recorded.
-                             CommandBuffer
-                          -> -- | @image@ is the image to be cleared.
-                             Image
-                          -> -- | @imageLayout@ specifies the current layout of the image subresource
-                             -- ranges to be cleared, and /must/ be
-                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
-                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.
-                             ImageLayout
-                          -> -- | @pDepthStencil@ is a pointer to a 'ClearDepthStencilValue' structure
-                             -- containing the values that the depth and stencil image subresource
-                             -- ranges will be cleared to (see
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values>
-                             -- below).
-                             ClearDepthStencilValue
-                          -> -- | @pRanges@ is a pointer to an array of
-                             -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a
-                             -- range of mipmap levels, array layers, and aspects to be cleared, as
-                             -- described in
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>.
-                             ("ranges" ::: Vector ImageSubresourceRange)
-                          -> io ()
-cmdClearDepthStencilImage commandBuffer image imageLayout depthStencil ranges = liftIO . evalContT $ do
-  let vkCmdClearDepthStencilImagePtr = pVkCmdClearDepthStencilImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdClearDepthStencilImagePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearDepthStencilImage is null" Nothing Nothing
-  let vkCmdClearDepthStencilImage' = mkVkCmdClearDepthStencilImage vkCmdClearDepthStencilImagePtr
-  pDepthStencil <- ContT $ withCStruct (depthStencil)
-  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)
-  lift $ traceAroundEvent "vkCmdClearDepthStencilImage" (vkCmdClearDepthStencilImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pDepthStencil ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdClearAttachments
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()
-
--- | vkCmdClearAttachments - Clear regions within bound framebuffer
--- attachments
---
--- = Description
---
--- If the render pass has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>,
--- clears follow the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops operations of fragment density maps>
--- as if each clear region was a primitive which generates fragments. The
--- clear color is applied to all pixels inside each fragment’s area
--- regardless if the pixels lie outside of the clear region. Clears /may/
--- have a different set of supported fragment areas than draws.
---
--- Unlike other
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,
--- 'cmdClearAttachments' executes as a drawing command, rather than a
--- transfer command, with writes performed by it executing in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order rasterization order>.
--- Clears to color attachments are executed as color attachment writes, by
--- the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
--- stage. Clears to depth\/stencil attachments are executed as
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth writes>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil writes>
--- by the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
--- and
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
--- stages.
---
--- 'cmdClearAttachments' is not affected by the bound pipeline state.
---
--- Note
---
--- It is generally preferable to clear attachments by using the
--- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' load
--- operation at the start of rendering, as it is more efficient on some
--- implementations.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdClearAttachments-aspectMask-02501# If the @aspectMask@
---     member of any element of @pAttachments@ contains
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
---     then the @colorAttachment@ member of that element /must/ either
---     refer to a color attachment which is
---     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ be a valid
---     color attachment
---
--- -   #VUID-vkCmdClearAttachments-aspectMask-02502# If the @aspectMask@
---     member of any element of @pAttachments@ contains
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
---     then the current subpass\' depth\/stencil attachment /must/ either
---     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a
---     depth component
---
--- -   #VUID-vkCmdClearAttachments-aspectMask-02503# If the @aspectMask@
---     member of any element of @pAttachments@ contains
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
---     then the current subpass\' depth\/stencil attachment /must/ either
---     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a
---     stencil component
---
--- -   #VUID-vkCmdClearAttachments-rect-02682# The @rect@ member of each
---     element of @pRects@ /must/ have an @extent.width@ greater than @0@
---
--- -   #VUID-vkCmdClearAttachments-rect-02683# The @rect@ member of each
---     element of @pRects@ /must/ have an @extent.height@ greater than @0@
---
--- -   #VUID-vkCmdClearAttachments-pRects-00016# The rectangular region
---     specified by each element of @pRects@ /must/ be contained within the
---     render area of the current render pass instance
---
--- -   #VUID-vkCmdClearAttachments-pRects-00017# The layers specified by
---     each element of @pRects@ /must/ be contained within every attachment
---     that @pAttachments@ refers to
---
--- -   #VUID-vkCmdClearAttachments-layerCount-01934# The @layerCount@
---     member of each element of @pRects@ /must/ not be @0@
---
--- -   #VUID-vkCmdClearAttachments-commandBuffer-02504# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, each attachment to be cleared /must/ not be a
---     protected image
---
--- -   #VUID-vkCmdClearAttachments-commandBuffer-02505# If @commandBuffer@
---     is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, each attachment to be cleared /must/ not be an
---     unprotected image
---
--- -   #VUID-vkCmdClearAttachments-baseArrayLayer-00018# If the render pass
---     instance this is recorded in uses multiview, then @baseArrayLayer@
---     /must/ be zero and @layerCount@ /must/ be one
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdClearAttachments-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdClearAttachments-pAttachments-parameter# @pAttachments@
---     /must/ be a valid pointer to an array of @attachmentCount@ valid
---     'ClearAttachment' structures
---
--- -   #VUID-vkCmdClearAttachments-pRects-parameter# @pRects@ /must/ be a
---     valid pointer to an array of @rectCount@ 'ClearRect' structures
---
--- -   #VUID-vkCmdClearAttachments-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-vkCmdClearAttachments-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdClearAttachments-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdClearAttachments-attachmentCount-arraylength#
---     @attachmentCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdClearAttachments-rectCount-arraylength# @rectCount@
---     /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ClearAttachment', 'ClearRect', 'Vulkan.Core10.Handles.CommandBuffer'
-cmdClearAttachments :: forall io
-                     . (MonadIO io)
-                    => -- | @commandBuffer@ is the command buffer into which the command will be
-                       -- recorded.
-                       CommandBuffer
-                    -> -- | @pAttachments@ is a pointer to an array of 'ClearAttachment' structures
-                       -- defining the attachments to clear and the clear values to use. If any
-                       -- attachment index to be cleared is not backed by an image view, then the
-                       -- clear has no effect.
-                       ("attachments" ::: Vector ClearAttachment)
-                    -> -- | @pRects@ is a pointer to an array of 'ClearRect' structures defining
-                       -- regions within each selected attachment to clear.
-                       ("rects" ::: Vector ClearRect)
-                    -> io ()
-cmdClearAttachments commandBuffer attachments rects = liftIO . evalContT $ do
-  let vkCmdClearAttachmentsPtr = pVkCmdClearAttachments (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdClearAttachmentsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearAttachments is null" Nothing Nothing
-  let vkCmdClearAttachments' = mkVkCmdClearAttachments vkCmdClearAttachmentsPtr
-  pPAttachments <- ContT $ allocaBytes @ClearAttachment ((Data.Vector.length (attachments)) * 24)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments `plusPtr` (24 * (i)) :: Ptr ClearAttachment) (e) . ($ ())) (attachments)
-  pPRects <- ContT $ allocaBytes @ClearRect ((Data.Vector.length (rects)) * 24)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRects `plusPtr` (24 * (i)) :: Ptr ClearRect) (e)) (rects)
-  lift $ traceAroundEvent "vkCmdClearAttachments" (vkCmdClearAttachments' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32)) (pPAttachments) ((fromIntegral (Data.Vector.length $ (rects)) :: Word32)) (pPRects))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdResolveImage
-  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()
-
--- | vkCmdResolveImage - Resolve regions of an image
---
--- = Description
---
--- During the resolve the samples corresponding to each pixel location in
--- the source are converted to a single sample before being written to the
--- destination. If the source formats are floating-point or normalized
--- types, the sample values for each pixel are resolved in an
--- implementation-dependent manner. If the source formats are integer
--- types, a single sample’s value is selected for each pixel.
---
--- @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
--- in texels of the sub-regions of the source and destination image data.
--- @extent@ is the size in texels of the source image to resolve in
--- @width@, @height@ and @depth@. Each element of @pRegions@ /must/ be a
--- region that is contained within its corresponding image.
---
--- Resolves are done layer by layer starting with @baseArrayLayer@ member
--- of @srcSubresource@ for the source and @dstSubresource@ for the
--- destination. @layerCount@ layers are resolved to the destination image.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdResolveImage-commandBuffer-01837# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdResolveImage-commandBuffer-01838# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdResolveImage-commandBuffer-01839# If @commandBuffer@ is a
---     protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- -   #VUID-vkCmdResolveImage-pRegions-00255# The union of all source
---     regions, and the union of all destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-vkCmdResolveImage-srcImage-00256# If @srcImage@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdResolveImage-srcImage-00257# @srcImage@ /must/ have a
---     sample count equal to any valid sample count value other than
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-vkCmdResolveImage-dstImage-00258# If @dstImage@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdResolveImage-dstImage-00259# @dstImage@ /must/ have a
---     sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-vkCmdResolveImage-srcImageLayout-00260# @srcImageLayout@
---     /must/ specify the layout of the image subresources of @srcImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdResolveImage-srcImageLayout-01400# @srcImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-vkCmdResolveImage-dstImageLayout-00262# @dstImageLayout@
---     /must/ specify the layout of the image subresources of @dstImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-vkCmdResolveImage-dstImageLayout-01401# @dstImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-vkCmdResolveImage-dstImage-02003# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
---
--- -   #VUID-vkCmdResolveImage-linearColorAttachment-06519# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
---     feature is enabled and the image is created with
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
---
--- -   #VUID-vkCmdResolveImage-srcImage-01386# @srcImage@ and @dstImage@
---     /must/ have been created with the same image format
---
--- -   #VUID-vkCmdResolveImage-srcSubresource-01709# The
---     @srcSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-vkCmdResolveImage-dstSubresource-01710# The
---     @dstSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-vkCmdResolveImage-srcSubresource-01711# The
---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-vkCmdResolveImage-dstSubresource-01712# The
---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-vkCmdResolveImage-dstImage-02546# @dstImage@ and @srcImage@
---     /must/ not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-vkCmdResolveImage-srcImage-04446# If either @srcImage@ or
---     @dstImage@ are of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
---     @srcSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-vkCmdResolveImage-srcImage-04447# If either @srcImage@ or
---     @dstImage@ are of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
---     @dstSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-vkCmdResolveImage-srcOffset-00269# For each element of
---     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdResolveImage-srcOffset-00270# For each element of
---     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdResolveImage-srcImage-00271# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@
---     /must/ be @1@
---
--- -   #VUID-vkCmdResolveImage-srcOffset-00272# For each element of
---     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-vkCmdResolveImage-srcImage-00273# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- -   #VUID-vkCmdResolveImage-dstOffset-00274# For each element of
---     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdResolveImage-dstOffset-00275# For each element of
---     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdResolveImage-dstImage-00276# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@
---     /must/ be @1@
---
--- -   #VUID-vkCmdResolveImage-dstOffset-00277# For each element of
---     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-vkCmdResolveImage-dstImage-00278# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdResolveImage-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdResolveImage-srcImage-parameter# @srcImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdResolveImage-srcImageLayout-parameter# @srcImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-vkCmdResolveImage-dstImage-parameter# @dstImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-vkCmdResolveImage-dstImageLayout-parameter# @dstImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-vkCmdResolveImage-pRegions-parameter# @pRegions@ /must/ be a
---     valid pointer to an array of @regionCount@ valid 'ImageResolve'
---     structures
---
--- -   #VUID-vkCmdResolveImage-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-vkCmdResolveImage-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdResolveImage-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdResolveImage-regionCount-arraylength# @regionCount@
---     /must/ be greater than @0@
---
--- -   #VUID-vkCmdResolveImage-commonparent# Each of @commandBuffer@,
---     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageResolve'
-cmdResolveImage :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command will be
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @srcImage@ is the source image.
-                   ("srcImage" ::: Image)
-                -> -- | @srcImageLayout@ is the layout of the source image subresources for the
-                   -- resolve.
-                   ("srcImageLayout" ::: ImageLayout)
-                -> -- | @dstImage@ is the destination image.
-                   ("dstImage" ::: Image)
-                -> -- | @dstImageLayout@ is the layout of the destination image subresources for
-                   -- the resolve.
-                   ("dstImageLayout" ::: ImageLayout)
-                -> -- | @pRegions@ is a pointer to an array of 'ImageResolve' structures
-                   -- specifying the regions to resolve.
-                   ("regions" ::: Vector ImageResolve)
-                -> io ()
-cmdResolveImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do
-  let vkCmdResolveImagePtr = pVkCmdResolveImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdResolveImagePtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResolveImage is null" Nothing Nothing
-  let vkCmdResolveImage' = mkVkCmdResolveImage vkCmdResolveImagePtr
-  pPRegions <- ContT $ allocaBytes @ImageResolve ((Data.Vector.length (regions)) * 68)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageResolve) (e)) (regions)
-  lift $ traceAroundEvent "vkCmdResolveImage" (vkCmdResolveImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetEvent
-  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()
-
--- | vkCmdSetEvent - Set an event object to signaled state
---
--- = Description
---
--- 'cmdSetEvent' behaves identically to
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR', except that
--- it does not define an access scope, and /must/ only be used with
--- 'cmdWaitEvents', not
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetEvent-stageMask-04090# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   #VUID-vkCmdSetEvent-stageMask-04091# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   #VUID-vkCmdSetEvent-stageMask-04092# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdSetEvent-stageMask-04093# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdSetEvent-stageMask-04094# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdSetEvent-stageMask-04095# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdSetEvent-stageMask-04096# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdSetEvent-stageMask-04097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdSetEvent-stageMask-03937# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @stageMask@ /must/ not be @0@
---
--- -   #VUID-vkCmdSetEvent-stageMask-06457# Any pipeline stage included in
---     @stageMask@ /must/ be supported by the capabilities of the queue
---     family specified by the @queueFamilyIndex@ member of the
---     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was
---     used to create the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
---
--- -   #VUID-vkCmdSetEvent-stageMask-01149# @stageMask@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
---
--- -   #VUID-vkCmdSetEvent-commandBuffer-01152# @commandBuffer@’s current
---     device mask /must/ include exactly one physical device
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetEvent-commandBuffer-parameter# @commandBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetEvent-event-parameter# @event@ /must/ be a valid
---     'Vulkan.Core10.Handles.Event' handle
---
--- -   #VUID-vkCmdSetEvent-stageMask-parameter# @stageMask@ /must/ be a
---     valid combination of
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     values
---
--- -   #VUID-vkCmdSetEvent-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-vkCmdSetEvent-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdSetEvent-renderpass# This command /must/ only be called
---     outside of a render pass instance
---
--- -   #VUID-vkCmdSetEvent-commonparent# Both of @commandBuffer@, and
---     @event@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
-cmdSetEvent :: forall io
-             . (MonadIO io)
-            => -- | @commandBuffer@ is the command buffer into which the command is
-               -- recorded.
-               CommandBuffer
-            -> -- | @event@ is the event that will be signaled.
-               Event
-            -> -- | @stageMask@ specifies the
-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>
-               -- used to determine the first
-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
-               ("stageMask" ::: PipelineStageFlags)
-            -> io ()
-cmdSetEvent commandBuffer event stageMask = liftIO $ do
-  let vkCmdSetEventPtr = pVkCmdSetEvent (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetEventPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetEvent is null" Nothing Nothing
-  let vkCmdSetEvent' = mkVkCmdSetEvent vkCmdSetEventPtr
-  traceAroundEvent "vkCmdSetEvent" (vkCmdSetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdResetEvent
-  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()
-
--- | vkCmdResetEvent - Reset an event object to non-signaled state
---
--- = Description
---
--- 'cmdResetEvent' behaves identically to
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdResetEvent2KHR'.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdResetEvent-stageMask-04090# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   #VUID-vkCmdResetEvent-stageMask-04091# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   #VUID-vkCmdResetEvent-stageMask-04092# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent-stageMask-04093# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent-stageMask-04094# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent-stageMask-04095# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdResetEvent-stageMask-04096# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdResetEvent-stageMask-04097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdResetEvent-stageMask-03937# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @stageMask@ /must/ not be @0@
---
--- -   #VUID-vkCmdResetEvent-stageMask-06458# Any pipeline stage included
---     in @stageMask@ /must/ be supported by the capabilities of the queue
---     family specified by the @queueFamilyIndex@ member of the
---     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was
---     used to create the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
---
--- -   #VUID-vkCmdResetEvent-stageMask-01153# @stageMask@ /must/ not
---     include
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
---
--- -   #VUID-vkCmdResetEvent-event-03834# There /must/ be an execution
---     dependency between 'cmdResetEvent' and the execution of any
---     'cmdWaitEvents' that includes @event@ in its @pEvents@ parameter
---
--- -   #VUID-vkCmdResetEvent-event-03835# There /must/ be an execution
---     dependency between 'cmdResetEvent' and the execution of any
---     'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR' that
---     includes @event@ in its @pEvents@ parameter
---
--- -   #VUID-vkCmdResetEvent-commandBuffer-01157# @commandBuffer@’s current
---     device mask /must/ include exactly one physical device
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdResetEvent-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdResetEvent-event-parameter# @event@ /must/ be a valid
---     'Vulkan.Core10.Handles.Event' handle
---
--- -   #VUID-vkCmdResetEvent-stageMask-parameter# @stageMask@ /must/ be a
---     valid combination of
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     values
---
--- -   #VUID-vkCmdResetEvent-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-vkCmdResetEvent-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdResetEvent-renderpass# This command /must/ only be called
---     outside of a render pass instance
---
--- -   #VUID-vkCmdResetEvent-commonparent# Both of @commandBuffer@, and
---     @event@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
-cmdResetEvent :: forall io
-               . (MonadIO io)
-              => -- | @commandBuffer@ is the command buffer into which the command is
-                 -- recorded.
-                 CommandBuffer
-              -> -- | @event@ is the event that will be unsignaled.
-                 Event
-              -> -- | @stageMask@ is a bitmask of
-                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                 -- specifying the
-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>
-                 -- used to determine when the @event@ is unsignaled.
-                 ("stageMask" ::: PipelineStageFlags)
-              -> io ()
-cmdResetEvent commandBuffer event stageMask = liftIO $ do
-  let vkCmdResetEventPtr = pVkCmdResetEvent (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdResetEventPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetEvent is null" Nothing Nothing
-  let vkCmdResetEvent' = mkVkCmdResetEvent vkCmdResetEventPtr
-  traceAroundEvent "vkCmdResetEvent" (vkCmdResetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWaitEventsUnsafe
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()
-
-foreign import ccall
-  "dynamic" mkVkCmdWaitEventsSafe
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()
-
--- | cmdWaitEvents with selectable safeness
-cmdWaitEventsSafeOrUnsafe :: forall io
-                           . (MonadIO io)
-                          => (FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ())
-                          -> -- | @commandBuffer@ is the command buffer into which the command is
-                             -- recorded.
-                             CommandBuffer
-                          -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.
-                             ("events" ::: Vector Event)
-                          -> -- | @srcStageMask@ is a bitmask of
-                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                             -- specifying the
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.
-                             ("srcStageMask" ::: PipelineStageFlags)
-                          -> -- | @dstStageMask@ is a bitmask of
-                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                             -- specifying the
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.
-                             ("dstStageMask" ::: PipelineStageFlags)
-                          -> -- | @pMemoryBarriers@ is a pointer to an array of
-                             -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
-                             ("memoryBarriers" ::: Vector MemoryBarrier)
-                          -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
-                             -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
-                             ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
-                          -> -- | @pImageMemoryBarriers@ is a pointer to an array of
-                             -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
-                             ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
-                          -> io ()
-cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEvents commandBuffer events srcStageMask dstStageMask memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do
-  let vkCmdWaitEventsPtr = pVkCmdWaitEvents (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdWaitEventsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWaitEvents is null" Nothing Nothing
-  let vkCmdWaitEvents' = mkVkCmdWaitEvents vkCmdWaitEventsPtr
-  pPEvents <- ContT $ allocaBytes @Event ((Data.Vector.length (events)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)
-  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)
-  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)
-  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)
-  lift $ traceAroundEvent "vkCmdWaitEvents" (vkCmdWaitEvents' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (events)) :: Word32)) (pPEvents) (srcStageMask) (dstStageMask) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))
-  pure $ ()
-
--- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory
---
--- = Description
---
--- 'cmdWaitEvents' is largely similar to
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR', but /can/
--- only wait on signal operations defined by 'cmdSetEvent'. As
--- 'cmdSetEvent' does not define any access scopes, 'cmdWaitEvents' defines
--- the first access scope for each event signal operation in addition to
--- its own access scopes.
---
--- Note
---
--- Since 'cmdSetEvent' does not have any dependency information beyond a
--- stage mask, implementations do not have the same opportunity to perform
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
--- in advance as they do with
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR' and
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR'.
---
--- When 'cmdWaitEvents' is submitted to a queue, it defines a memory
--- dependency between prior event signal operations on the same queue or
--- the host, and subsequent commands. 'cmdWaitEvents' /must/ not be used to
--- wait on event signal operations occurring on other queues.
---
--- The first synchronization scope only includes event signal operations
--- that operate on members of @pEvents@, and the operations that
--- happened-before the event signal operations. Event signal operations
--- performed by 'cmdSetEvent' that occur earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
--- are included in the first synchronization scope, if the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
--- pipeline stage in their @stageMask@ parameter is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
--- than or equal to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
--- pipeline stage in @srcStageMask@. Event signal operations performed by
--- 'Vulkan.Core10.Event.setEvent' are only included in the first
--- synchronization scope if
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' is
--- included in @srcStageMask@.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands that occur later in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- The second synchronization scope is limited to operations on the
--- pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
--- specified by @dstStageMask@.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to accesses in the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
--- specified by @srcStageMask@. Within that, the first access scope only
--- includes the first access scopes defined by elements of the
--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
--- arrays, which each define a set of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
--- If no memory barriers are specified, then the first access scope
--- includes no accesses.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to accesses in the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
--- specified by @dstStageMask@. Within that, the second access scope only
--- includes the second access scopes defined by elements of the
--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
--- arrays, which each define a set of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
--- If no memory barriers are specified, then the second access scope
--- includes no accesses.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04090# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04091# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04092# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04093# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04094# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04095# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04096# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-04097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-03937# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @srcStageMask@ /must/ not be @0@
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04090# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04091# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04092# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04093# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04094# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04095# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04096# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-04097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-03937# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @dstStageMask@ /must/ not be @0@
---
--- -   #VUID-vkCmdWaitEvents-srcAccessMask-02815# The @srcAccessMask@
---     member of each element of @pMemoryBarriers@ /must/ only include
---     access flags that are supported by one or more of the pipeline
---     stages in @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdWaitEvents-dstAccessMask-02816# The @dstAccessMask@
---     member of each element of @pMemoryBarriers@ /must/ only include
---     access flags that are supported by one or more of the pipeline
---     stages in @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817# For any element
---     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @srcQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @srcAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818# For any element
---     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @dstQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @dstAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819# For any element of
---     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @srcQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @srcAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820# For any element of
---     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @dstQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @dstAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-06459# Any pipeline stage
---     included in @srcStageMask@ /must/ be supported by the capabilities
---     of the queue family specified by the @queueFamilyIndex@ member of
---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-06460# Any pipeline stage
---     included in @dstStageMask@ /must/ be supported by the capabilities
---     of the queue family specified by the @queueFamilyIndex@ member of
---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-01158# @srcStageMask@ /must/ be
---     the bitwise OR of the @stageMask@ parameter used in previous calls
---     to 'cmdSetEvent' with any of the elements of @pEvents@ and
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
---     if any of the elements of @pEvents@ was set using
---     'Vulkan.Core10.Event.setEvent'
---
--- -   #VUID-vkCmdWaitEvents-pEvents-01163# If @pEvents@ includes one or
---     more events that will be signaled by 'Vulkan.Core10.Event.setEvent'
---     after @commandBuffer@ has been submitted to a queue, then
---     'cmdWaitEvents' /must/ not be called inside a render pass instance
---
--- -   #VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803# The
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any
---     element of @pBufferMemoryBarriers@ or @pImageMemoryBarriers@ /must/
---     be equal
---
--- -   #VUID-vkCmdWaitEvents-commandBuffer-01167# @commandBuffer@’s current
---     device mask /must/ include exactly one physical device
---
--- -   #VUID-vkCmdWaitEvents-pEvents-03847# Elements of @pEvents@ /must/
---     not have been signaled by
---     'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWaitEvents-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWaitEvents-pEvents-parameter# @pEvents@ /must/ be a valid
---     pointer to an array of @eventCount@ valid
---     'Vulkan.Core10.Handles.Event' handles
---
--- -   #VUID-vkCmdWaitEvents-srcStageMask-parameter# @srcStageMask@ /must/
---     be a valid combination of
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     values
---
--- -   #VUID-vkCmdWaitEvents-dstStageMask-parameter# @dstStageMask@ /must/
---     be a valid combination of
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     values
---
--- -   #VUID-vkCmdWaitEvents-pMemoryBarriers-parameter# If
---     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid
---     pointer to an array of @memoryBarrierCount@ valid
---     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures
---
--- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter# If
---     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@
---     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@
---     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures
---
--- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter# If
---     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/
---     be a valid pointer to an array of @imageMemoryBarrierCount@ valid
---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures
---
--- -   #VUID-vkCmdWaitEvents-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-vkCmdWaitEvents-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdWaitEvents-eventCount-arraylength# @eventCount@ /must/ be
---     greater than @0@
---
--- -   #VUID-vkCmdWaitEvents-commonparent# Both of @commandBuffer@, and the
---     elements of @pEvents@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
--- 'Vulkan.Core10.OtherTypes.MemoryBarrier',
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
-cmdWaitEvents :: forall io
-               . (MonadIO io)
-              => -- | @commandBuffer@ is the command buffer into which the command is
-                 -- recorded.
-                 CommandBuffer
-              -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.
-                 ("events" ::: Vector Event)
-              -> -- | @srcStageMask@ is a bitmask of
-                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                 -- specifying the
-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.
-                 ("srcStageMask" ::: PipelineStageFlags)
-              -> -- | @dstStageMask@ is a bitmask of
-                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                 -- specifying the
-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.
-                 ("dstStageMask" ::: PipelineStageFlags)
-              -> -- | @pMemoryBarriers@ is a pointer to an array of
-                 -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
-                 ("memoryBarriers" ::: Vector MemoryBarrier)
-              -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
-                 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
-                 ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
-              -> -- | @pImageMemoryBarriers@ is a pointer to an array of
-                 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
-                 ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
-              -> io ()
-cmdWaitEvents = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsUnsafe
-
--- | A variant of 'cmdWaitEvents' which makes a *safe* FFI call
-cmdWaitEventsSafe :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which the command is
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.
-                     ("events" ::: Vector Event)
-                  -> -- | @srcStageMask@ is a bitmask of
-                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                     -- specifying the
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.
-                     ("srcStageMask" ::: PipelineStageFlags)
-                  -> -- | @dstStageMask@ is a bitmask of
-                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                     -- specifying the
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.
-                     ("dstStageMask" ::: PipelineStageFlags)
-                  -> -- | @pMemoryBarriers@ is a pointer to an array of
-                     -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
-                     ("memoryBarriers" ::: Vector MemoryBarrier)
-                  -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
-                     -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
-                     ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
-                  -> -- | @pImageMemoryBarriers@ is a pointer to an array of
-                     -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
-                     ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
-                  -> io ()
-cmdWaitEventsSafe = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsSafe
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPipelineBarrier
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()
-
--- | vkCmdPipelineBarrier - Insert a memory dependency
---
--- = Description
---
--- 'cmdPipelineBarrier' operates almost identically to
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdPipelineBarrier2KHR',
--- except that the scopes and barriers are defined as direct parameters
--- rather than being defined by an
--- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR'.
---
--- When 'cmdPipelineBarrier' is submitted to a queue, it defines a memory
--- dependency between commands that were submitted before it, and those
--- submitted after it.
---
--- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the
--- first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands that occur earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the
--- first synchronization scope includes only commands that occur earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
--- within the same subpass. In either case, the first synchronization scope
--- is limited to operations on the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
--- specified by @srcStageMask@.
---
--- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the
--- second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands that occur later in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the
--- second synchronization scope includes only commands that occur later in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
--- within the same subpass. In either case, the second synchronization
--- scope is limited to operations on the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
--- specified by @dstStageMask@.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to accesses in the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
--- specified by @srcStageMask@. Within that, the first access scope only
--- includes the first access scopes defined by elements of the
--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
--- arrays, which each define a set of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
--- If no memory barriers are specified, then the first access scope
--- includes no accesses.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- is limited to accesses in the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
--- specified by @dstStageMask@. Within that, the second access scope only
--- includes the second access scopes defined by elements of the
--- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
--- arrays, which each define a set of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
--- If no memory barriers are specified, then the second access scope
--- includes no accesses.
---
--- If @dependencyFlags@ includes
--- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT', then
--- any dependency between
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space>
--- pipeline stages is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>
--- - otherwise it is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-global>.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04090# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04091# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04092# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04093# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04094# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04095# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04096# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-03937# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @srcStageMask@ /must/ not be @0@
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04090# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04091# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04092# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04093# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04094# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04095# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04096# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04097# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-03937# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @dstStageMask@ /must/ not be @0@
---
--- -   #VUID-vkCmdPipelineBarrier-srcAccessMask-02815# The @srcAccessMask@
---     member of each element of @pMemoryBarriers@ /must/ only include
---     access flags that are supported by one or more of the pipeline
---     stages in @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdPipelineBarrier-dstAccessMask-02816# The @dstAccessMask@
---     member of each element of @pMemoryBarriers@ /must/ only include
---     access flags that are supported by one or more of the pipeline
---     stages in @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817# For any
---     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @srcQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @srcAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818# For any
---     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @dstQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @dstAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819# For any
---     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @srcQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @srcAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820# For any
---     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ members are equal, or if its
---     @dstQueueFamilyIndex@ is the queue family index that was used to
---     create the command pool that @commandBuffer@ was allocated from,
---     then its @dstAccessMask@ member /must/ only contain access flags
---     that are supported by one or more of the pipeline stages in
---     @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
---
--- -   #VUID-vkCmdPipelineBarrier-pDependencies-02285# If
---     'cmdPipelineBarrier' is called within a render pass instance, the
---     render pass /must/ have been created with at least one
---     'Vulkan.Core10.Pass.SubpassDependency' instance in
---     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that
---     expresses a dependency from the current subpass to itself, with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scopes>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
---     that are all supersets of the scopes defined in this command
---
--- -   #VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178# If
---     'cmdPipelineBarrier' is called within a render pass instance, it
---     /must/ not include any buffer memory barriers
---
--- -   #VUID-vkCmdPipelineBarrier-image-04073# If 'cmdPipelineBarrier' is
---     called within a render pass instance, the @image@ member of any
---     image memory barrier included in this command /must/ be an
---     attachment used in the current subpass both as an input attachment,
---     and as either a color or depth\/stencil attachment
---
--- -   #VUID-vkCmdPipelineBarrier-oldLayout-01181# If 'cmdPipelineBarrier'
---     is called within a render pass instance, the @oldLayout@ and
---     @newLayout@ members of any image memory barrier included in this
---     command /must/ be equal
---
--- -   #VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182# If
---     'cmdPipelineBarrier' is called within a render pass instance, the
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any image
---     memory barrier included in this command /must/ be equal
---
--- -   #VUID-vkCmdPipelineBarrier-dependencyFlags-01186# If
---     'cmdPipelineBarrier' is called outside of a render pass instance,
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
---     /must/ not be included in the dependency flags
---
--- -   #VUID-vkCmdPipelineBarrier-None-06191# If 'cmdPipelineBarrier' is
---     called within a render pass instance, the render pass /must/ not
---     have been started with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-06461# Any pipeline stage
---     included in @srcStageMask@ /must/ be supported by the capabilities
---     of the queue family specified by the @queueFamilyIndex@ member of
---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-06462# Any pipeline stage
---     included in @dstStageMask@ /must/ be supported by the capabilities
---     of the queue family specified by the @queueFamilyIndex@ member of
---     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
---     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPipelineBarrier-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPipelineBarrier-srcStageMask-parameter# @srcStageMask@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     values
---
--- -   #VUID-vkCmdPipelineBarrier-dstStageMask-parameter# @dstStageMask@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     values
---
--- -   #VUID-vkCmdPipelineBarrier-dependencyFlags-parameter#
---     @dependencyFlags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' values
---
--- -   #VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter# If
---     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid
---     pointer to an array of @memoryBarrierCount@ valid
---     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures
---
--- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter# If
---     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@
---     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@
---     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures
---
--- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter# If
---     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/
---     be a valid pointer to an array of @imageMemoryBarrierCount@ valid
---     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures
---
--- -   #VUID-vkCmdPipelineBarrier-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-vkCmdPipelineBarrier-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',
--- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
--- 'Vulkan.Core10.OtherTypes.MemoryBarrier',
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
-cmdPipelineBarrier :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer into which the command is
-                      -- recorded.
-                      CommandBuffer
-                   -> -- | @srcStageMask@ is a bitmask of
-                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                      -- specifying the
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stages>.
-                      ("srcStageMask" ::: PipelineStageFlags)
-                   -> -- | @dstStageMask@ is a bitmask of
-                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
-                      -- specifying the
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stages>.
-                      ("dstStageMask" ::: PipelineStageFlags)
-                   -> -- | @dependencyFlags@ is a bitmask of
-                      -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' specifying
-                      -- how execution and memory dependencies are formed.
-                      DependencyFlags
-                   -> -- | @pMemoryBarriers@ is a pointer to an array of
-                      -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
-                      ("memoryBarriers" ::: Vector MemoryBarrier)
-                   -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
-                      -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
-                      ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
-                   -> -- | @pImageMemoryBarriers@ is a pointer to an array of
-                      -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
-                      ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
-                   -> io ()
-cmdPipelineBarrier commandBuffer srcStageMask dstStageMask dependencyFlags memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do
-  let vkCmdPipelineBarrierPtr = pVkCmdPipelineBarrier (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPipelineBarrierPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPipelineBarrier is null" Nothing Nothing
-  let vkCmdPipelineBarrier' = mkVkCmdPipelineBarrier vkCmdPipelineBarrierPtr
-  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)
-  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)
-  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)
-  lift $ traceAroundEvent "vkCmdPipelineBarrier" (vkCmdPipelineBarrier' (commandBufferHandle (commandBuffer)) (srcStageMask) (dstStageMask) (dependencyFlags) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBeginQuery
-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()
-
--- | vkCmdBeginQuery - Begin a query
---
--- = Description
---
--- If the @queryType@ of the pool is
--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' and @flags@
--- contains
--- 'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT', an
--- implementation /must/ return a result that matches the actual number of
--- samples passed. This is described in more detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion Occlusion Queries>.
---
--- Calling 'cmdBeginQuery' is equivalent to calling
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT'
--- with the @index@ parameter set to zero.
---
--- After beginning a query, that query is considered /active/ within the
--- command buffer it was called in until that same query is ended. Queries
--- active in a primary command buffer when secondary command buffers are
--- executed are considered active for those secondary command buffers.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBeginQuery-None-00807# All queries used by the command
---     /must/ be unavailable
---
--- -   #VUID-vkCmdBeginQuery-queryType-02804# The @queryType@ used to
---     create @queryPool@ /must/ not be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
---
--- -   #VUID-vkCmdBeginQuery-queryType-04728# The @queryType@ used to
---     create @queryPool@ /must/ not be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
---     or
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
---
--- -   #VUID-vkCmdBeginQuery-queryType-04729# The @queryType@ used to
---     create @queryPool@ /must/ not be
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
---
--- -   #VUID-vkCmdBeginQuery-queryType-00800# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise precise occlusion queries>
---     feature is not enabled, or the @queryType@ used to create
---     @queryPool@ was not
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', @flags@ /must/
---     not contain
---     'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'
---
--- -   #VUID-vkCmdBeginQuery-query-00802# @query@ /must/ be less than the
---     number of queries in @queryPool@
---
--- -   #VUID-vkCmdBeginQuery-queryType-00803# If the @queryType@ used to
---     create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', the
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBeginQuery-queryType-00804# If the @queryType@ used to
---     create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and
---     any of the @pipelineStatistics@ indicate graphics operations, the
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBeginQuery-queryType-00805# If the @queryType@ used to
---     create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and
---     any of the @pipelineStatistics@ indicate compute operations, the
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support compute operations
---
--- -   #VUID-vkCmdBeginQuery-commandBuffer-01885# @commandBuffer@ /must/
---     not be a protected command buffer
---
--- -   #VUID-vkCmdBeginQuery-query-00808# If called within a render pass
---     instance, the sum of @query@ and the number of bits set in the
---     current subpass’s view mask /must/ be less than or equal to the
---     number of queries in @queryPool@
---
--- -   #VUID-vkCmdBeginQuery-queryPool-01922# @queryPool@ /must/ have been
---     created with a @queryType@ that differs from that of any queries
---     that are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
---     within @commandBuffer@
---
--- -   #VUID-vkCmdBeginQuery-queryType-02327# If the @queryType@ used to
---     create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBeginQuery-queryType-02328# If the @queryType@ used to
---     create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
---     then
---     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@
---     /must/ be supported
---
--- -   #VUID-vkCmdBeginQuery-queryPool-03223# If @queryPool@ was created
---     with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>
---     /must/ have been held before
---     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' was called on
---     @commandBuffer@
---
--- -   #VUID-vkCmdBeginQuery-queryPool-03224# If @queryPool@ was created
---     with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
---     one of the counters used to create @queryPool@ was
---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',
---     the query begin /must/ be the first recorded command in
---     @commandBuffer@
---
--- -   #VUID-vkCmdBeginQuery-queryPool-03225# If @queryPool@ was created
---     with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
---     one of the counters used to create @queryPool@ was
---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',
---     the begin command /must/ not be recorded within a render pass
---     instance
---
--- -   #VUID-vkCmdBeginQuery-queryPool-03226# If @queryPool@ was created
---     with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
---     another query pool with a @queryType@
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' has
---     been used within @commandBuffer@, its parent primary command buffer
---     or secondary command buffer recorded within the same parent primary
---     command buffer as @commandBuffer@, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterMultipleQueryPools performanceCounterMultipleQueryPools>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdBeginQuery-None-02863# If @queryPool@ was created with a
---     @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     this command /must/ not be recorded in a command buffer that, either
---     directly or through secondary command buffers, also contains a
---     'cmdResetQueryPool' command affecting the same query
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBeginQuery-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBeginQuery-queryPool-parameter# @queryPool@ /must/ be a
---     valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdBeginQuery-flags-parameter# @flags@ /must/ be a valid
---     combination of
---     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
---     values
---
--- -   #VUID-vkCmdBeginQuery-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-vkCmdBeginQuery-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, decode, or encode
---     operations
---
--- -   #VUID-vkCmdBeginQuery-commonparent# Both of @commandBuffer@, and
---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
--- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',
--- 'Vulkan.Core10.Handles.QueryPool'
-cmdBeginQuery :: forall io
-               . (MonadIO io)
-              => -- | @commandBuffer@ is the command buffer into which this command will be
-                 -- recorded.
-                 CommandBuffer
-              -> -- | @queryPool@ is the query pool that will manage the results of the query.
-                 QueryPool
-              -> -- | @query@ is the query index within the query pool that will contain the
-                 -- results.
-                 ("query" ::: Word32)
-              -> -- | @flags@ is a bitmask of
-                 -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
-                 -- specifying constraints on the types of queries that /can/ be performed.
-                 QueryControlFlags
-              -> io ()
-cmdBeginQuery commandBuffer queryPool query flags = liftIO $ do
-  let vkCmdBeginQueryPtr = pVkCmdBeginQuery (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdBeginQueryPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginQuery is null" Nothing Nothing
-  let vkCmdBeginQuery' = mkVkCmdBeginQuery vkCmdBeginQueryPtr
-  traceAroundEvent "vkCmdBeginQuery" (vkCmdBeginQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags))
-  pure $ ()
-
--- | This function will call the supplied action between calls to
--- 'cmdBeginQuery' and 'cmdEndQuery'
---
--- Note that 'cmdEndQuery' is *not* called if an exception is thrown by the
--- inner action.
-cmdUseQuery :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> io r -> io r
-cmdUseQuery commandBuffer queryPool query flags a =
-  (cmdBeginQuery commandBuffer queryPool query flags) *> a <* (cmdEndQuery commandBuffer queryPool query)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdEndQuery
-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()
-
--- | vkCmdEndQuery - Ends a query
---
--- = Description
---
--- Calling 'cmdEndQuery' is equivalent to calling
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT' with
--- the @index@ parameter set to zero.
---
--- As queries operate asynchronously, ending a query does not immediately
--- set the query’s status to available. A query is considered /finished/
--- when the final results of the query are ready to be retrieved by
--- 'Vulkan.Core10.Query.getQueryPoolResults' and 'cmdCopyQueryPoolResults',
--- and this is when the query’s status is set to available.
---
--- Once a query is ended the query /must/ finish in finite time, unless the
--- state of the query is changed using other commands, e.g. by issuing a
--- reset of the query.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdEndQuery-None-01923# All queries used by the command
---     /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
---
--- -   #VUID-vkCmdEndQuery-query-00810# @query@ /must/ be less than the
---     number of queries in @queryPool@
---
--- -   #VUID-vkCmdEndQuery-commandBuffer-01886# @commandBuffer@ /must/ not
---     be a protected command buffer
---
--- -   #VUID-vkCmdEndQuery-query-00812# If 'cmdEndQuery' is called within a
---     render pass instance, the sum of @query@ and the number of bits set
---     in the current subpass’s view mask /must/ be less than or equal to
---     the number of queries in @queryPool@
---
--- -   #VUID-vkCmdEndQuery-queryPool-03227# If @queryPool@ was created with
---     a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
---     one or more of the counters used to create @queryPool@ was
---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',
---     the 'cmdEndQuery' /must/ be the last recorded command in
---     @commandBuffer@
---
--- -   #VUID-vkCmdEndQuery-queryPool-03228# If @queryPool@ was created with
---     a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
---     one or more of the counters used to create @queryPool@ was
---     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',
---     the 'cmdEndQuery' /must/ not be recorded within a render pass
---     instance
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdEndQuery-commandBuffer-parameter# @commandBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdEndQuery-queryPool-parameter# @queryPool@ /must/ be a
---     valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdEndQuery-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-vkCmdEndQuery-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, decode, or encode
---     operations
---
--- -   #VUID-vkCmdEndQuery-commonparent# Both of @commandBuffer@, and
---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
--- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'
-cmdEndQuery :: forall io
-             . (MonadIO io)
-            => -- | @commandBuffer@ is the command buffer into which this command will be
-               -- recorded.
-               CommandBuffer
-            -> -- | @queryPool@ is the query pool that is managing the results of the query.
-               QueryPool
-            -> -- | @query@ is the query index within the query pool where the result is
-               -- stored.
-               ("query" ::: Word32)
-            -> io ()
-cmdEndQuery commandBuffer queryPool query = liftIO $ do
-  let vkCmdEndQueryPtr = pVkCmdEndQuery (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdEndQueryPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndQuery is null" Nothing Nothing
-  let vkCmdEndQuery' = mkVkCmdEndQuery vkCmdEndQueryPtr
-  traceAroundEvent "vkCmdEndQuery" (vkCmdEndQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdResetQueryPool
-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()
-
--- | vkCmdResetQueryPool - Reset queries in a query pool
---
--- = Description
---
--- When executed on a queue, this command sets the status of query indices
--- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.
---
--- If the @queryType@ used to create @queryPool@ was
--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', this
--- command sets the status of query indices [@firstQuery@, @firstQuery@ +
--- @queryCount@ - 1] to unavailable for each pass of @queryPool@, as
--- indicated by a call to
--- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.
---
--- Note
---
--- Because 'cmdResetQueryPool' resets all the passes of the indicated
--- queries, applications must not record a 'cmdResetQueryPool' command for
--- a @queryPool@ created with
--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' in a
--- command buffer that needs to be submitted multiple times as indicated by
--- a call to
--- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.
--- Otherwise applications will never be able to complete the recorded
--- queries.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdResetQueryPool-firstQuery-00796# @firstQuery@ /must/ be
---     less than the number of queries in @queryPool@
---
--- -   #VUID-vkCmdResetQueryPool-firstQuery-00797# The sum of @firstQuery@
---     and @queryCount@ /must/ be less than or equal to the number of
---     queries in @queryPool@
---
--- -   #VUID-vkCmdResetQueryPool-None-02841# All queries used by the
---     command /must/ not be active
---
--- -   #VUID-vkCmdResetQueryPool-firstQuery-02862# If @queryPool@ was
---     created with
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     this command /must/ not be recorded in a command buffer that, either
---     directly or through secondary command buffers, also contains begin
---     commands for a query from the set of queries [@firstQuery@,
---     @firstQuery@ + @queryCount@ - 1]
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdResetQueryPool-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdResetQueryPool-queryPool-parameter# @queryPool@ /must/ be
---     a valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdResetQueryPool-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-vkCmdResetQueryPool-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, compute, decode, or encode
---     operations
---
--- -   #VUID-vkCmdResetQueryPool-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdResetQueryPool-commonparent# Both of @commandBuffer@, and
---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
--- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'
-cmdResetQueryPool :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which this command will be
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @queryPool@ is the handle of the query pool managing the queries being
-                     -- reset.
-                     QueryPool
-                  -> -- | @firstQuery@ is the initial query index to reset.
-                     ("firstQuery" ::: Word32)
-                  -> -- | @queryCount@ is the number of queries to reset.
-                     ("queryCount" ::: Word32)
-                  -> io ()
-cmdResetQueryPool commandBuffer queryPool firstQuery queryCount = liftIO $ do
-  let vkCmdResetQueryPoolPtr = pVkCmdResetQueryPool (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdResetQueryPoolPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetQueryPool is null" Nothing Nothing
-  let vkCmdResetQueryPool' = mkVkCmdResetQueryPool vkCmdResetQueryPoolPtr
-  traceAroundEvent "vkCmdResetQueryPool" (vkCmdResetQueryPool' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWriteTimestamp
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()
-
--- | vkCmdWriteTimestamp - Write a device timestamp into a query object
---
--- = Description
---
--- 'cmdWriteTimestamp' latches the value of the timer when all previous
--- commands have completed executing as far as the specified pipeline
--- stage, and writes the timestamp value to memory. When the timestamp
--- value is written, the availability status of the query is set to
--- available.
---
--- Note
---
--- If an implementation is unable to detect completion and latch the timer
--- at any specific stage of the pipeline, it /may/ instead do so at any
--- logically later stage.
---
--- Comparisons between timestamps are not meaningful if the timestamps are
--- written by commands submitted to different queues.
---
--- Note
---
--- An example of such a comparison is subtracting an older timestamp from a
--- newer one to determine the execution time of a sequence of commands.
---
--- If 'cmdWriteTimestamp' is called while executing a render pass instance
--- that has multiview enabled, the timestamp uses N consecutive query
--- indices in the query pool (starting at @query@) where N is the number of
--- bits set in the view mask of the subpass the command is executed in. The
--- resulting query values are determined by an implementation-dependent
--- choice of one of the following behaviors:
---
--- -   The first query is a timestamp value and (if more than one bit is
---     set in the view mask) zero is written to the remaining queries. If
---     two timestamps are written in the same subpass, the sum of the
---     execution time of all views between those commands is the difference
---     between the first query written by each command.
---
--- -   All N queries are timestamp values. If two timestamps are written in
---     the same subpass, the sum of the execution time of all views between
---     those commands is the sum of the difference between corresponding
---     queries written by each command. The difference between
---     corresponding queries /may/ be the execution time of a single view.
---
--- In either case, the application /can/ sum the differences between all N
--- queries to determine the total execution time.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04074# @pipelineStage@
---     /must/ be a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage>
---     for the queue family that was used to create the command pool that
---     @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04075# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04076# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04077# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04078# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04079# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04080# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
---     or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04081# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdWriteTimestamp-synchronization2-06489# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_NONE_KHR'
---
--- -   #VUID-vkCmdWriteTimestamp-queryPool-01416# @queryPool@ /must/ have
---     been created with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
---
--- -   #VUID-vkCmdWriteTimestamp-queryPool-00828# The query identified by
---     @queryPool@ and @query@ /must/ be /unavailable/
---
--- -   #VUID-vkCmdWriteTimestamp-timestampValidBits-00829# The command
---     pool’s queue family /must/ support a non-zero @timestampValidBits@
---
--- -   #VUID-vkCmdWriteTimestamp-query-04904# @query@ /must/ be less than
---     the number of queries in @queryPool@
---
--- -   #VUID-vkCmdWriteTimestamp-None-00830# All queries used by the
---     command /must/ be unavailable
---
--- -   #VUID-vkCmdWriteTimestamp-query-00831# If 'cmdWriteTimestamp' is
---     called within a render pass instance, the sum of @query@ and the
---     number of bits set in the current subpass’s view mask /must/ be less
---     than or equal to the number of queries in @queryPool@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWriteTimestamp-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWriteTimestamp-pipelineStage-parameter# @pipelineStage@
---     /must/ be a valid
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     value
---
--- -   #VUID-vkCmdWriteTimestamp-queryPool-parameter# @queryPool@ /must/ be
---     a valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdWriteTimestamp-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-vkCmdWriteTimestamp-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, compute, decode,
---     or encode operations
---
--- -   #VUID-vkCmdWriteTimestamp-commonparent# Both of @commandBuffer@, and
---     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
--- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',
--- 'Vulkan.Core10.Handles.QueryPool'
-cmdWriteTimestamp :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which the command will be
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @pipelineStage@ is a
-                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' value,
-                     -- specifying a stage of the pipeline.
-                     PipelineStageFlagBits
-                  -> -- | @queryPool@ is the query pool that will manage the timestamp.
-                     QueryPool
-                  -> -- | @query@ is the query within the query pool that will contain the
-                     -- timestamp.
-                     ("query" ::: Word32)
-                  -> io ()
-cmdWriteTimestamp commandBuffer pipelineStage queryPool query = liftIO $ do
-  let vkCmdWriteTimestampPtr = pVkCmdWriteTimestamp (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdWriteTimestampPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteTimestamp is null" Nothing Nothing
-  let vkCmdWriteTimestamp' = mkVkCmdWriteTimestamp vkCmdWriteTimestampPtr
-  traceAroundEvent "vkCmdWriteTimestamp" (vkCmdWriteTimestamp' (commandBufferHandle (commandBuffer)) (pipelineStage) (queryPool) (query))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyQueryPoolResults
-  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()
-
--- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool
--- to a buffer object
---
--- = Description
---
--- 'cmdCopyQueryPoolResults' is guaranteed to see the effect of previous
--- uses of 'cmdResetQueryPool' in the same queue, without any additional
--- synchronization. Thus, the results will always reflect the most recent
--- use of the query.
---
--- @flags@ has the same possible values described above for the @flags@
--- parameter of 'Vulkan.Core10.Query.getQueryPoolResults', but the
--- different style of execution causes some subtle behavioral differences.
--- Because 'cmdCopyQueryPoolResults' executes in order with respect to
--- other query commands, there is less ambiguity about which use of a query
--- is being requested.
---
--- Results for all requested occlusion queries, pipeline statistics
--- queries, transform feedback queries, and timestamp queries are written
--- as 64-bit unsigned integer values if
--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set or
--- 32-bit unsigned integer values otherwise. Performance queries store
--- results in a tightly packed array whose type is determined by the @unit@
--- member of the corresponding
--- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR'.
---
--- If neither of
--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' and
--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
--- are set, results are only written out for queries in the available
--- state.
---
--- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is
--- set, the implementation will wait for each query’s status to be in the
--- available state before retrieving the numerical results for that query.
--- This is guaranteed to reflect the most recent use of the query on the
--- same queue, assuming that the query is not being simultaneously used by
--- other queues. If the query does not become available in a finite amount
--- of time (e.g. due to not issuing a query since the last reset), a
--- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error /may/ occur.
---
--- Similarly, if
--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
--- is set and
--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is not
--- set, the availability is guaranteed to reflect the most recent use of
--- the query on the same queue, assuming that the query is not being
--- simultaneously used by other queues. As with
--- 'Vulkan.Core10.Query.getQueryPoolResults', implementations /must/
--- guarantee that if they return a non-zero availability value, then the
--- numerical results are valid.
---
--- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT' is
--- set, 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is
--- not set, and the query’s status is unavailable, an intermediate result
--- value between zero and the final result value is written for that query.
---
--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
--- /must/ not be used if the pool’s @queryType@ is
--- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'.
---
--- 'cmdCopyQueryPoolResults' is considered to be a transfer operation, and
--- its writes to buffer memory /must/ be synchronized using
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'
--- and 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'
--- before using the results.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyQueryPoolResults-dstOffset-00819# @dstOffset@ /must/
---     be less than the size of @dstBuffer@
---
--- -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00820# @firstQuery@
---     /must/ be less than the number of queries in @queryPool@
---
--- -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00821# The sum of
---     @firstQuery@ and @queryCount@ /must/ be less than or equal to the
---     number of queries in @queryPool@
---
--- -   #VUID-vkCmdCopyQueryPoolResults-flags-00822# If
---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not
---     set in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of
---     @4@
---
--- -   #VUID-vkCmdCopyQueryPoolResults-flags-00823# If
---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set
---     in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of @8@
---
--- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824# @dstBuffer@ /must/
---     have enough storage, from @dstOffset@, to contain the result of each
---     query, as described
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayout here>
---
--- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825# @dstBuffer@ /must/
---     have been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826# If @dstBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdCopyQueryPoolResults-queryType-00827# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP', @flags@ /must/
---     not contain
---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
---
--- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03232# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR'::@allowCommandBufferQueryCopies@
---     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03233# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     @flags@ /must/ not contain
---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT',
---     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
---     or 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'
---
--- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03234# If the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     the @queryPool@ /must/ have been submitted once for each pass as
---     retrieved via a call to
---     'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'
---
--- -   #VUID-vkCmdCopyQueryPoolResults-queryType-02734#
---     'cmdCopyQueryPoolResults' /must/ not be called if the @queryType@
---     used to create @queryPool@ was
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyQueryPoolResults-queryPool-parameter# @queryPool@
---     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter# @dstBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdCopyQueryPoolResults-flags-parameter# @flags@ /must/ be a
---     valid combination of
---     'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' values
---
--- -   #VUID-vkCmdCopyQueryPoolResults-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-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdCopyQueryPoolResults-renderpass# This command /must/ only
---     be called outside of a render pass instance
---
--- -   #VUID-vkCmdCopyQueryPoolResults-commonparent# Each of
---     @commandBuffer@, @dstBuffer@, and @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Handles.QueryPool',
--- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'
-cmdCopyQueryPoolResults :: forall io
-                         . (MonadIO io)
-                        => -- | @commandBuffer@ is the command buffer into which this command will be
-                           -- recorded.
-                           CommandBuffer
-                        -> -- | @queryPool@ is the query pool managing the queries containing the
-                           -- desired results.
-                           QueryPool
-                        -> -- | @firstQuery@ is the initial query index.
-                           ("firstQuery" ::: Word32)
-                        -> -- | @queryCount@ is the number of queries. @firstQuery@ and @queryCount@
-                           -- together define a range of queries.
-                           ("queryCount" ::: Word32)
-                        -> -- | @dstBuffer@ is a 'Vulkan.Core10.Handles.Buffer' object that will receive
-                           -- the results of the copy command.
-                           ("dstBuffer" ::: Buffer)
-                        -> -- | @dstOffset@ is an offset into @dstBuffer@.
-                           ("dstOffset" ::: DeviceSize)
-                        -> -- | @stride@ is the stride in bytes between results for individual queries
-                           -- within @dstBuffer@. The required size of the backing memory for
-                           -- @dstBuffer@ is determined as described above for
-                           -- 'Vulkan.Core10.Query.getQueryPoolResults'.
-                           ("stride" ::: DeviceSize)
-                        -> -- | @flags@ is a bitmask of
-                           -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' specifying
-                           -- how and when results are returned.
-                           QueryResultFlags
-                        -> io ()
-cmdCopyQueryPoolResults commandBuffer queryPool firstQuery queryCount dstBuffer dstOffset stride flags = liftIO $ do
-  let vkCmdCopyQueryPoolResultsPtr = pVkCmdCopyQueryPoolResults (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdCopyQueryPoolResultsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyQueryPoolResults is null" Nothing Nothing
-  let vkCmdCopyQueryPoolResults' = mkVkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResultsPtr
-  traceAroundEvent "vkCmdCopyQueryPoolResults" (vkCmdCopyQueryPoolResults' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount) (dstBuffer) (dstOffset) (stride) (flags))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPushConstants
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()
-
--- | vkCmdPushConstants - Update the values of push constants
---
--- = Description
---
--- When a command buffer begins recording, all push constant values are
--- undefined. Reads of undefined push constant values by the executing
--- shader return undefined values.
---
--- Push constant values /can/ be updated incrementally, causing shader
--- stages in @stageFlags@ to read the new data from @pValues@ for push
--- constants modified by this command, while still reading the previous
--- data for push constants not modified by this command. When a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline command>
--- is issued, the bound pipeline’s layout /must/ be compatible with the
--- layouts used to set the values of all push constants in the pipeline
--- layout’s push constant ranges, as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
--- Binding a pipeline with a layout that is not compatible with the push
--- constant layout does not disturb the push constant values.
---
--- Note
---
--- As @stageFlags@ needs to include all flags the relevant push constant
--- ranges were created with, any flags that are not supported by the queue
--- family that the 'Vulkan.Core10.Handles.CommandPool' used to allocate
--- @commandBuffer@ was created on are ignored.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPushConstants-offset-01795# For each byte in the range
---     specified by @offset@ and @size@ and for each shader stage in
---     @stageFlags@, there /must/ be a push constant range in @layout@ that
---     includes that byte and that stage
---
--- -   #VUID-vkCmdPushConstants-offset-01796# For each byte in the range
---     specified by @offset@ and @size@ and for each push constant range
---     that overlaps that byte, @stageFlags@ /must/ include all stages in
---     that push constant range’s
---     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@
---
--- -   #VUID-vkCmdPushConstants-offset-00368# @offset@ /must/ be a multiple
---     of @4@
---
--- -   #VUID-vkCmdPushConstants-size-00369# @size@ /must/ be a multiple of
---     @4@
---
--- -   #VUID-vkCmdPushConstants-offset-00370# @offset@ /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
---
--- -   #VUID-vkCmdPushConstants-size-00371# @size@ /must/ be less than or
---     equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
---     minus @offset@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPushConstants-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPushConstants-layout-parameter# @layout@ /must/ be a
---     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
---
--- -   #VUID-vkCmdPushConstants-stageFlags-parameter# @stageFlags@ /must/
---     be a valid combination of
---     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
---
--- -   #VUID-vkCmdPushConstants-stageFlags-requiredbitmask# @stageFlags@
---     /must/ not be @0@
---
--- -   #VUID-vkCmdPushConstants-pValues-parameter# @pValues@ /must/ be a
---     valid pointer to an array of @size@ bytes
---
--- -   #VUID-vkCmdPushConstants-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-vkCmdPushConstants-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdPushConstants-size-arraylength# @size@ /must/ be greater
---     than @0@
---
--- -   #VUID-vkCmdPushConstants-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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Handles.PipelineLayout',
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'
-cmdPushConstants :: forall io
-                  . (MonadIO io)
-                 => -- | @commandBuffer@ is the command buffer in which the push constant update
-                    -- will be recorded.
-                    CommandBuffer
-                 -> -- | @layout@ is the pipeline layout used to program the push constant
-                    -- updates.
-                    PipelineLayout
-                 -> -- | @stageFlags@ is a bitmask of
-                    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
-                    -- the shader stages that will use the push constants in the updated range.
-                    ShaderStageFlags
-                 -> -- | @offset@ is the start offset of the push constant range to update, in
-                    -- units of bytes.
-                    ("offset" ::: Word32)
-                 -> -- | @size@ is the size of the push constant range to update, in units of
-                    -- bytes.
-                    ("size" ::: Word32)
-                 -> -- | @pValues@ is a pointer to an array of @size@ bytes containing the new
-                    -- push constant values.
-                    ("values" ::: Ptr ())
-                 -> io ()
-cmdPushConstants commandBuffer layout stageFlags offset size values = liftIO $ do
-  let vkCmdPushConstantsPtr = pVkCmdPushConstants (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdPushConstantsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushConstants is null" Nothing Nothing
-  let vkCmdPushConstants' = mkVkCmdPushConstants vkCmdPushConstantsPtr
-  traceAroundEvent "vkCmdPushConstants" (vkCmdPushConstants' (commandBufferHandle (commandBuffer)) (layout) (stageFlags) (offset) (size) (values))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBeginRenderPass
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()
-
--- | vkCmdBeginRenderPass - Begin a new render pass
---
--- = Description
---
--- After beginning a render pass instance, the command buffer is ready to
--- record the commands for the first subpass of that render pass.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-00895# If any of the
---     @initialLayout@ or @finalLayout@ member of the
---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
---     structures specified when creating the render pass specified in the
---     @renderPass@ member of @pRenderPassBegin@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
---     then the corresponding attachment image view of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-01758# If any of the
---     @initialLayout@ or @finalLayout@ member of the
---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
---     structures specified when creating the render pass specified in the
---     @renderPass@ member of @pRenderPassBegin@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
---     then the corresponding attachment image view of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-02842# If any of the
---     @initialLayout@ or @finalLayout@ member of the
---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
---     structures specified when creating the render pass specified in the
---     @renderPass@ member of @pRenderPassBegin@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---     then the corresponding attachment image view of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843# If any of the
---     @stencilInitialLayout@ or @stencilFinalLayout@ member of the
---     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
---     structures or the @stencilLayout@ member of the
---     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'
---     structures specified when creating the render pass specified in the
---     @renderPass@ member of @pRenderPassBegin@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---     then the corresponding attachment image view of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-00897# If any of the
---     @initialLayout@ or @finalLayout@ member of the
---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
---     structures specified when creating the render pass specified in the
---     @renderPass@ member of @pRenderPassBegin@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
---     then the corresponding attachment image view of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-00898# If any of the
---     @initialLayout@ or @finalLayout@ member of the
---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
---     structures specified when creating the render pass specified in the
---     @renderPass@ member of @pRenderPassBegin@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
---     then the corresponding attachment image view of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-00899# If any of the
---     @initialLayout@ or @finalLayout@ member of the
---     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
---     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
---     structures specified when creating the render pass specified in the
---     @renderPass@ member of @pRenderPassBegin@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     then the corresponding attachment image view of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
---     have been created with a @usage@ value including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---
--- -   #VUID-vkCmdBeginRenderPass-initialLayout-00900# If the
---     @initialLayout@ member of any of the
---     'Vulkan.Core10.Pass.AttachmentDescription' structures specified when
---     creating the render pass specified in the @renderPass@ member of
---     @pRenderPassBegin@ is not
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', then each
---     such @initialLayout@ /must/ be equal to the current layout of the
---     corresponding attachment image subresource of the framebuffer
---     specified in the @framebuffer@ member of @pRenderPassBegin@
---
--- -   #VUID-vkCmdBeginRenderPass-srcStageMask-06451# The @srcStageMask@
---     members of any element of the @pDependencies@ member of
---     'Vulkan.Core10.Pass.RenderPassCreateInfo' used to create
---     @renderPass@ /must/ be supported by the capabilities of the queue
---     family identified by the @queueFamilyIndex@ member of the
---     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to create the
---     command pool which @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdBeginRenderPass-dstStageMask-06452# The @dstStageMask@
---     members of any element of the @pDependencies@ member of
---     'Vulkan.Core10.Pass.RenderPassCreateInfo' used to create
---     @renderPass@ /must/ be supported by the capabilities of the queue
---     family identified by the @queueFamilyIndex@ member of the
---     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to create the
---     command pool which @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdBeginRenderPass-framebuffer-02532# For any attachment in
---     @framebuffer@ that is used by @renderPass@ and is bound to memory
---     locations that are also bound to another attachment used by
---     @renderPass@, and if at least one of those uses causes either
---     attachment to be written to, both attachments /must/ have had the
---     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'
---     set
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBeginRenderPass-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter#
---     @pRenderPassBegin@ /must/ be a valid pointer to a valid
---     'RenderPassBeginInfo' structure
---
--- -   #VUID-vkCmdBeginRenderPass-contents-parameter# @contents@ /must/ be
---     a valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value
---
--- -   #VUID-vkCmdBeginRenderPass-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-vkCmdBeginRenderPass-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBeginRenderPass-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdBeginRenderPass-bufferlevel# @commandBuffer@ /must/ be a
---     primary 'Vulkan.Core10.Handles.CommandBuffer'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderPassBeginInfo',
--- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'
-cmdBeginRenderPass :: forall a io
-                    . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer in which to record the command.
-                      CommandBuffer
-                   -> -- | @pRenderPassBegin@ is a pointer to a 'RenderPassBeginInfo' structure
-                      -- specifying the render pass to begin an instance of, and the framebuffer
-                      -- the instance uses.
-                      (RenderPassBeginInfo a)
-                   -> -- | @contents@ is a 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'
-                      -- value specifying how the commands in the first subpass will be provided.
-                      SubpassContents
-                   -> io ()
-cmdBeginRenderPass commandBuffer renderPassBegin contents = liftIO . evalContT $ do
-  let vkCmdBeginRenderPassPtr = pVkCmdBeginRenderPass (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBeginRenderPassPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginRenderPass is null" Nothing Nothing
-  let vkCmdBeginRenderPass' = mkVkCmdBeginRenderPass vkCmdBeginRenderPassPtr
-  pRenderPassBegin <- ContT $ withCStruct (renderPassBegin)
-  lift $ traceAroundEvent "vkCmdBeginRenderPass" (vkCmdBeginRenderPass' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderPassBegin) (contents))
-  pure $ ()
-
--- | This function will call the supplied action between calls to
--- 'cmdBeginRenderPass' and 'cmdEndRenderPass'
---
--- Note that 'cmdEndRenderPass' is *not* called if an exception is thrown
--- by the inner action.
-cmdUseRenderPass :: forall a io r . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io r -> io r
-cmdUseRenderPass commandBuffer pRenderPassBegin contents a =
-  (cmdBeginRenderPass commandBuffer pRenderPassBegin contents) *> a <* (cmdEndRenderPass commandBuffer)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdNextSubpass
-  :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> SubpassContents -> IO ()
-
--- | vkCmdNextSubpass - Transition to the next subpass of a render pass
---
--- = Description
---
--- The subpass index for a render pass begins at zero when
--- 'cmdBeginRenderPass' is recorded, and increments each time
--- 'cmdNextSubpass' is recorded.
---
--- Moving to the next subpass automatically performs any multisample
--- resolve operations in the subpass being ended. End-of-subpass
--- multisample resolves are treated as color attachment writes for the
--- purposes of synchronization. This applies to resolve operations for both
--- color and depth\/stencil attachments. That is, they are considered to
--- execute in the
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
--- pipeline stage and their writes are synchronized with
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
--- Synchronization between rendering within a subpass and any resolve
--- operations at the end of the subpass occurs automatically, without need
--- for explicit dependencies or pipeline barriers. However, if the resolve
--- attachment is also used in a different subpass, an explicit dependency
--- is needed.
---
--- After transitioning to the next subpass, the application /can/ record
--- the commands for that subpass.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdNextSubpass-None-00909# The current subpass index /must/
---     be less than the number of subpasses in the render pass minus one
---
--- -   #VUID-vkCmdNextSubpass-None-02349# This command /must/ not be
---     recorded when transform feedback is active
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdNextSubpass-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdNextSubpass-contents-parameter# @contents@ /must/ be a
---     valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value
---
--- -   #VUID-vkCmdNextSubpass-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-vkCmdNextSubpass-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdNextSubpass-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdNextSubpass-bufferlevel# @commandBuffer@ /must/ be a
---     primary 'Vulkan.Core10.Handles.CommandBuffer'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'
-cmdNextSubpass :: forall io
-                . (MonadIO io)
-               => -- | @commandBuffer@ is the command buffer in which to record the command.
-                  CommandBuffer
-               -> -- | @contents@ specifies how the commands in the next subpass will be
-                  -- provided, in the same fashion as the corresponding parameter of
-                  -- 'cmdBeginRenderPass'.
-                  SubpassContents
-               -> io ()
-cmdNextSubpass commandBuffer contents = liftIO $ do
-  let vkCmdNextSubpassPtr = pVkCmdNextSubpass (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdNextSubpassPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdNextSubpass is null" Nothing Nothing
-  let vkCmdNextSubpass' = mkVkCmdNextSubpass vkCmdNextSubpassPtr
-  traceAroundEvent "vkCmdNextSubpass" (vkCmdNextSubpass' (commandBufferHandle (commandBuffer)) (contents))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdEndRenderPass
-  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()
-
--- | vkCmdEndRenderPass - End the current render pass
---
--- = Description
---
--- Ending a render pass instance performs any multisample resolve
--- operations on the final subpass.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdEndRenderPass-None-00910# The current subpass index
---     /must/ be equal to the number of subpasses in the render pass minus
---     one
---
--- -   #VUID-vkCmdEndRenderPass-None-02351# This command /must/ not be
---     recorded when transform feedback is active
---
--- -   #VUID-vkCmdEndRenderPass-None-06170# The current render pass
---     instance /must/ not have been begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdEndRenderPass-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdEndRenderPass-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-vkCmdEndRenderPass-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdEndRenderPass-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- -   #VUID-vkCmdEndRenderPass-bufferlevel# @commandBuffer@ /must/ be a
---     primary 'Vulkan.Core10.Handles.CommandBuffer'
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdEndRenderPass :: forall io
-                  . (MonadIO io)
-                 => -- | @commandBuffer@ is the command buffer in which to end the current render
-                    -- pass instance.
-                    CommandBuffer
-                 -> io ()
-cmdEndRenderPass commandBuffer = liftIO $ do
-  let vkCmdEndRenderPassPtr = pVkCmdEndRenderPass (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdEndRenderPassPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRenderPass is null" Nothing Nothing
-  let vkCmdEndRenderPass' = mkVkCmdEndRenderPass vkCmdEndRenderPassPtr
-  traceAroundEvent "vkCmdEndRenderPass" (vkCmdEndRenderPass' (commandBufferHandle (commandBuffer)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdExecuteCommands
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()
-
--- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary
--- command buffer
---
--- = Description
---
--- If any element of @pCommandBuffers@ was not recorded with the
--- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
--- flag, and it was recorded into any other primary command buffer which is
--- currently in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable or recording state>,
--- that primary command buffer becomes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00088# Each element of
---     @pCommandBuffers@ /must/ have been allocated with a @level@ of
---     'Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00089# Each element of
---     @pCommandBuffers@ /must/ be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00091# If any element of
---     @pCommandBuffers@ was not recorded with the
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
---     flag, it /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00092# If any element of
---     @pCommandBuffers@ was not recorded with the
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
---     flag, it /must/ not have already been recorded to @commandBuffer@
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00093# If any element of
---     @pCommandBuffers@ was not recorded with the
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
---     flag, it /must/ not appear more than once in @pCommandBuffers@
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00094# Each element of
---     @pCommandBuffers@ /must/ have been allocated from a
---     'Vulkan.Core10.Handles.CommandPool' that was created for the same
---     queue family as the 'Vulkan.Core10.Handles.CommandPool' from which
---     @commandBuffer@ was allocated
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00096# If
---     'cmdExecuteCommands' is being called within a render pass instance,
---     each element of @pCommandBuffers@ /must/ have been recorded with the
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00099# If
---     'cmdExecuteCommands' is being called within a render pass instance,
---     and any element of @pCommandBuffers@ was recorded with
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@framebuffer@
---     not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', that
---     'Vulkan.Core10.Handles.Framebuffer' /must/ match the
---     'Vulkan.Core10.Handles.Framebuffer' used in the current render pass
---     instance
---
--- -   #VUID-vkCmdExecuteCommands-contents-06018# If 'cmdExecuteCommands'
---     is being called within a render pass instance begun with
---     'cmdBeginRenderPass', its @contents@ parameter /must/ have been set
---     to
---     'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06019# If
---     'cmdExecuteCommands' is being called within a render pass instance
---     begun with 'cmdBeginRenderPass', each element of @pCommandBuffers@
---     /must/ have been recorded with
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@subpass@
---     set to the index of the subpass which the given command buffer will
---     be executed in
---
--- -   #VUID-vkCmdExecuteCommands-pBeginInfo-06020# If 'cmdExecuteCommands'
---     is being called within a render pass instance begun with
---     'cmdBeginRenderPass', the render passes specified in the
---     @pBeginInfo->pInheritanceInfo->renderPass@ members of the
---     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands used to
---     begin recording each element of @pCommandBuffers@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
---     with the current render pass
---
--- -   #VUID-vkCmdExecuteCommands-pNext-02865# If 'cmdExecuteCommands' is
---     being called within a render pass instance that included
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
---     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of
---     @pCommandBuffers@ /must/ have been recorded with
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'
---     in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'
---
--- -   #VUID-vkCmdExecuteCommands-pNext-02866# If 'cmdExecuteCommands' is
---     being called within a render pass instance that included
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
---     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of
---     @pCommandBuffers@ /must/ have been recorded with
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@transform@
---     identical to
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@
---
--- -   #VUID-vkCmdExecuteCommands-pNext-02867# If 'cmdExecuteCommands' is
---     being called within a render pass instance that included
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
---     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of
---     @pCommandBuffers@ /must/ have been recorded with
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@renderArea@
---     identical to 'RenderPassBeginInfo'::@renderArea@
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00100# If
---     'cmdExecuteCommands' is not being called within a render pass
---     instance, each element of @pCommandBuffers@ /must/ not have been
---     recorded with the
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
---
--- -   #VUID-vkCmdExecuteCommands-commandBuffer-00101# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
---     feature is not enabled, @commandBuffer@ /must/ not have any queries
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
---
--- -   #VUID-vkCmdExecuteCommands-commandBuffer-00102# If @commandBuffer@
---     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,
---     then each element of @pCommandBuffers@ /must/ have been recorded
---     with
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@occlusionQueryEnable@
---     set to 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- -   #VUID-vkCmdExecuteCommands-commandBuffer-00103# If @commandBuffer@
---     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,
---     then each element of @pCommandBuffers@ /must/ have been recorded
---     with
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@queryFlags@
---     having all bits set that are set for the query
---
--- -   #VUID-vkCmdExecuteCommands-commandBuffer-00104# If @commandBuffer@
---     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'
---     query
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>,
---     then each element of @pCommandBuffers@ /must/ have been recorded
---     with
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@pipelineStatistics@
---     having all bits set that are set in the
---     'Vulkan.Core10.Handles.QueryPool' the query uses
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00105# Each element of
---     @pCommandBuffers@ /must/ not begin any query types that are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
---     in @commandBuffer@
---
--- -   #VUID-vkCmdExecuteCommands-commandBuffer-01820# If @commandBuffer@
---     is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, each element of @pCommandBuffers@ /must/ be a
---     protected command buffer
---
--- -   #VUID-vkCmdExecuteCommands-commandBuffer-01821# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, each element of @pCommandBuffers@ /must/ be an
---     unprotected command buffer
---
--- -   #VUID-vkCmdExecuteCommands-None-02286# This command /must/ not be
---     recorded when transform feedback is active
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06021# If
---     @pCommandBuffers@ contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
---     there /must/ be no action or synchronization commands between that
---     render pass instance and any render pass instance that resumes it
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06022# If
---     @pCommandBuffers@ contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
---     there /must/ be no render pass instances between that render pass
---     instance and any render pass instance that resumes it
---
--- -   #VUID-vkCmdExecuteCommands-variableSampleLocations-06023# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
---     limit is not supported, and any element of @pCommandBuffers@
---     contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
---     where a graphics pipeline has been bound, any pipelines bound in the
---     render pass instance that resumes it, or any subsequent render pass
---     instances that resume from that one and so on, /must/ use the same
---     sample locations
---
--- -   #VUID-vkCmdExecuteCommands-flags-06024# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     its
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@flags@
---     parameter /must/ have included
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR'
---
--- -   #VUID-vkCmdExecuteCommands-pBeginInfo-06025# If 'cmdExecuteCommands'
---     is being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the render passes specified in the
---     @pBeginInfo->pInheritanceInfo->renderPass@ members of the
---     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands used to
---     begin recording each element of @pCommandBuffers@ /must/ be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdExecuteCommands-flags-06026# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @flags@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@flags@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     excluding
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR'
---
--- -   #VUID-vkCmdExecuteCommands-colorAttachmentCount-06027# If
---     'cmdExecuteCommands' is being called within a render pass instance
---     begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @colorAttachmentCount@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---
--- -   #VUID-vkCmdExecuteCommands-imageView-06028# If 'cmdExecuteCommands'
---     is being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     if the @imageView@ member of an element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
---     element of the @pColorAttachmentFormats@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the format used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-pDepthAttachment-06029# If
---     'cmdExecuteCommands' is being called within a render pass instance
---     begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     if the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->imageView@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthAttachmentFormat@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the format used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-pStencilAttachment-06030# If
---     'cmdExecuteCommands' is being called within a render pass instance
---     begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     if the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->imageView@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @stencilAttachmentFormat@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the format used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-viewMask-06031# If 'cmdExecuteCommands'
---     is being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
---     the @viewMask@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---
--- -   #VUID-vkCmdExecuteCommands-pNext-06032# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, if the @imageView@ member of an element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
---     element of the @pColorAttachmentSamples@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the sample count used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-pNext-06033# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, if the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->imageView@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the sample count used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-pNext-06034# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
---     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, if the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->imageView@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
---     @depthStencilAttachmentSamples@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure included in the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
---     used to begin recording each element of @pCommandBuffers@ /must/ be
---     equal to the sample count used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-pNext-06035# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not
---     include a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, if the @imageView@ member of an element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@
---     /must/ be equal to the sample count used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-pNext-06036# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not
---     include a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, if the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->imageView@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@
---     /must/ be equal to the sample count used to create that image view
---
--- -   #VUID-vkCmdExecuteCommands-pNext-06037# If 'cmdExecuteCommands' is
---     being called within a render pass instance begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---     and the @pNext@ chain of
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not
---     include a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
---     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
---     structure, if the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->imageView@
---     parameter to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR' is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@
---     /must/ be equal to the sample count used to create that image view
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdExecuteCommands-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-parameter#
---     @pCommandBuffers@ /must/ be a valid pointer to an array of
---     @commandBufferCount@ valid 'Vulkan.Core10.Handles.CommandBuffer'
---     handles
---
--- -   #VUID-vkCmdExecuteCommands-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-vkCmdExecuteCommands-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdExecuteCommands-bufferlevel# @commandBuffer@ /must/ be a
---     primary 'Vulkan.Core10.Handles.CommandBuffer'
---
--- -   #VUID-vkCmdExecuteCommands-commandBufferCount-arraylength#
---     @commandBufferCount@ /must/ be greater than @0@
---
--- -   #VUID-vkCmdExecuteCommands-commonparent# Both of @commandBuffer@,
---     and the elements of @pCommandBuffers@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdExecuteCommands :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is a handle to a primary command buffer that the
-                      -- secondary command buffers are executed in.
-                      CommandBuffer
-                   -> -- | @pCommandBuffers@ is a pointer to an array of @commandBufferCount@
-                      -- secondary command buffer handles, which are recorded to execute in the
-                      -- primary command buffer in the order they are listed in the array.
-                      ("commandBuffers" ::: Vector CommandBuffer)
-                   -> io ()
-cmdExecuteCommands commandBuffer commandBuffers = liftIO . evalContT $ do
-  let vkCmdExecuteCommandsPtr = pVkCmdExecuteCommands (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdExecuteCommandsPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdExecuteCommands is null" Nothing Nothing
-  let vkCmdExecuteCommands' = mkVkCmdExecuteCommands vkCmdExecuteCommandsPtr
-  pPCommandBuffers <- ContT $ allocaBytes @(Ptr CommandBuffer_T) ((Data.Vector.length (commandBuffers)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBuffers `plusPtr` (8 * (i)) :: Ptr (Ptr CommandBuffer_T)) (commandBufferHandle (e))) (commandBuffers)
-  lift $ traceAroundEvent "vkCmdExecuteCommands" (vkCmdExecuteCommands' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (commandBuffers)) :: Word32)) (pPCommandBuffers))
-  pure $ ()
-
-
--- | VkClearRect - Structure specifying a clear rectangle
---
--- = Description
---
--- The layers [@baseArrayLayer@, @baseArrayLayer@ + @layerCount@) counting
--- from the base layer of the attachment image view are cleared.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'cmdClearAttachments'
-data ClearRect = ClearRect
-  { -- | @rect@ is the two-dimensional region to be cleared.
-    rect :: Rect2D
-  , -- | @baseArrayLayer@ is the first layer to be cleared.
-    baseArrayLayer :: Word32
-  , -- | @layerCount@ is the number of layers to clear.
-    layerCount :: Word32
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ClearRect)
-#endif
-deriving instance Show ClearRect
-
-instance ToCStruct ClearRect where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ClearRect{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr Rect2D)) (rect)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (baseArrayLayer)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (layerCount)
-    f
-  cStructSize = 24
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr Rect2D)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ClearRect where
-  peekCStruct p = do
-    rect <- peekCStruct @Rect2D ((p `plusPtr` 0 :: Ptr Rect2D))
-    baseArrayLayer <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    layerCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pure $ ClearRect
-             rect baseArrayLayer layerCount
-
-instance Storable ClearRect where
-  sizeOf ~_ = 24
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ClearRect where
-  zero = ClearRect
-           zero
-           zero
-           zero
-
-
--- | VkImageSubresourceLayers - Structure specifying an image subresource
--- layers
---
--- == Valid Usage
---
--- -   #VUID-VkImageSubresourceLayers-aspectMask-00167# If @aspectMask@
---     contains
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it
---     /must/ not contain either of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-VkImageSubresourceLayers-aspectMask-00168# @aspectMask@ /must/
---     not contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'
---
--- -   #VUID-VkImageSubresourceLayers-aspectMask-02247# @aspectMask@ /must/
---     not include @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index
---     /i/
---
--- -   #VUID-VkImageSubresourceLayers-layerCount-01700# @layerCount@ /must/
---     be greater than 0
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageSubresourceLayers-aspectMask-parameter# @aspectMask@
---     /must/ be a valid combination of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
---
--- -   #VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask#
---     @aspectMask@ /must/ not be @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'BufferImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', 'ImageBlit',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageBlit2KHR', 'ImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageCopy2KHR', 'ImageResolve',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageResolve2KHR'
-data ImageSubresourceLayers = ImageSubresourceLayers
-  { -- | @aspectMask@ is a combination of
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits', selecting
-    -- the color, depth and\/or stencil aspects to be copied.
-    aspectMask :: ImageAspectFlags
-  , -- | @mipLevel@ is the mipmap level to copy
-    mipLevel :: Word32
-  , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of
-    -- layers to copy.
-    baseArrayLayer :: Word32
-  , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount"
-    layerCount :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageSubresourceLayers)
-#endif
-deriving instance Show ImageSubresourceLayers
-
-instance ToCStruct ImageSubresourceLayers where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageSubresourceLayers{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (baseArrayLayer)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (layerCount)
-    f
-  cStructSize = 16
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ImageSubresourceLayers where
-  peekCStruct p = do
-    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
-    mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    baseArrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    layerCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    pure $ ImageSubresourceLayers
-             aspectMask mipLevel baseArrayLayer layerCount
-
-instance Storable ImageSubresourceLayers where
-  sizeOf ~_ = 16
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageSubresourceLayers where
-  zero = ImageSubresourceLayers
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkBufferCopy - Structure specifying a buffer copy operation
---
--- == Valid Usage
---
--- -   #VUID-VkBufferCopy-size-01988# The @size@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdCopyBuffer'
-data BufferCopy = BufferCopy
-  { -- | @srcOffset@ is the starting offset in bytes from the start of
-    -- @srcBuffer@.
-    srcOffset :: DeviceSize
-  , -- | @dstOffset@ is the starting offset in bytes from the start of
-    -- @dstBuffer@.
-    dstOffset :: DeviceSize
-  , -- | @size@ is the number of bytes to copy.
-    size :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferCopy)
-#endif
-deriving instance Show BufferCopy
-
-instance ToCStruct BufferCopy where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferCopy{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (srcOffset)
-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (dstOffset)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct BufferCopy where
-  peekCStruct p = do
-    srcOffset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))
-    dstOffset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    pure $ BufferCopy
-             srcOffset dstOffset size
-
-instance Storable BufferCopy where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BufferCopy where
-  zero = BufferCopy
-           zero
-           zero
-           zero
-
-
--- | VkImageCopy - Structure specifying an image copy operation
---
--- = Description
---
--- For 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' images, copies are
--- performed slice by slice starting with the @z@ member of the @srcOffset@
--- or @dstOffset@, and copying @depth@ slices. For images with multiple
--- layers, copies are performed layer by layer starting with the
--- @baseArrayLayer@ member of the @srcSubresource@ or @dstSubresource@ and
--- copying @layerCount@ layers. Image data /can/ be copied between images
--- with different image types. If one image is
--- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' and the other image is
--- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' with multiple layers, then
--- each slice is copied to or from a different layer.
---
--- Copies involving a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
--- specify the region to be copied in terms of the /plane/ to be copied,
--- not the coordinates of the multi-planar image. This means that copies
--- accessing the R\/B planes of “@_422@” format images /must/ fit the
--- copied region within half the @width@ of the parent image, and that
--- copies accessing the R\/B planes of “@_420@” format images /must/ fit
--- the copied region within half the @width@ and @height@ of the parent
--- image.
---
--- == Valid Usage
---
--- -   #VUID-VkImageCopy-extent-00140# The number of slices of the @extent@
---     (for 3D) or layers of the @srcSubresource@ (for non-3D) /must/ match
---     the number of slices of the @extent@ (for 3D) or layers of the
---     @dstSubresource@ (for non-3D)
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageCopy-srcSubresource-parameter# @srcSubresource@ /must/
---     be a valid 'ImageSubresourceLayers' structure
---
--- -   #VUID-VkImageCopy-dstSubresource-parameter# @dstSubresource@ /must/
---     be a valid 'ImageSubresourceLayers' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyImage'
-data ImageCopy = ImageCopy
-  { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers'
-    -- structures specifying the image subresources of the images used for the
-    -- source and destination image data, respectively.
-    srcSubresource :: ImageSubresourceLayers
-  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
-    -- in texels of the sub-regions of the source and destination image data.
-    srcOffset :: Offset3D
-  , -- No documentation found for Nested "VkImageCopy" "dstSubresource"
-    dstSubresource :: ImageSubresourceLayers
-  , -- No documentation found for Nested "VkImageCopy" "dstOffset"
-    dstOffset :: Offset3D
-  , -- | @extent@ is the size in texels of the image to copy in @width@, @height@
-    -- and @depth@.
-    extent :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageCopy)
-#endif
-deriving instance Show ImageCopy
-
-instance ToCStruct ImageCopy where
-  withCStruct x f = allocaBytes 68 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageCopy{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)
-    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset)
-    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource)
-    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset)
-    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (extent)
-    f
-  cStructSize = 68
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct ImageCopy where
-  peekCStruct p = do
-    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))
-    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D))
-    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers))
-    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D))
-    extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D))
-    pure $ ImageCopy
-             srcSubresource srcOffset dstSubresource dstOffset extent
-
-instance Storable ImageCopy where
-  sizeOf ~_ = 68
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageCopy where
-  zero = ImageCopy
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageBlit - Structure specifying an image blit operation
---
--- = Description
---
--- For each element of the @pRegions@ array, a blit operation is performed
--- for the specified source and destination regions.
---
--- == Valid Usage
---
--- -   #VUID-VkImageBlit-aspectMask-00238# The @aspectMask@ member of
---     @srcSubresource@ and @dstSubresource@ /must/ match
---
--- -   #VUID-VkImageBlit-layerCount-00239# The @layerCount@ member of
---     @srcSubresource@ and @dstSubresource@ /must/ match
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageBlit-srcSubresource-parameter# @srcSubresource@ /must/
---     be a valid 'ImageSubresourceLayers' structure
---
--- -   #VUID-VkImageBlit-dstSubresource-parameter# @dstSubresource@ /must/
---     be a valid 'ImageSubresourceLayers' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ImageSubresourceLayers', 'Vulkan.Core10.FundamentalTypes.Offset3D',
--- 'cmdBlitImage'
-data ImageBlit = ImageBlit
-  { -- | @srcSubresource@ is the subresource to blit from.
-    srcSubresource :: ImageSubresourceLayers
-  , -- | @srcOffsets@ is a pointer to an array of two
-    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
-    -- bounds of the source region within @srcSubresource@.
-    srcOffsets :: (Offset3D, Offset3D)
-  , -- | @dstSubresource@ is the subresource to blit into.
-    dstSubresource :: ImageSubresourceLayers
-  , -- | @dstOffsets@ is a pointer to an array of two
-    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
-    -- bounds of the destination region within @dstSubresource@.
-    dstOffsets :: (Offset3D, Offset3D)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageBlit)
-#endif
-deriving instance Show ImageBlit
-
-instance ToCStruct ImageBlit where
-  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageBlit{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)
-    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))
-    case (srcOffsets) of
-      (e0, e1) -> do
-        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
-        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    poke ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (dstSubresource)
-    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))
-    case (dstOffsets) of
-      (e0, e1) -> do
-        poke (pDstOffsets' :: Ptr Offset3D) (e0)
-        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    f
-  cStructSize = 80
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)
-    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))
-    case ((zero, zero)) of
-      (e0, e1) -> do
-        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
-        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    poke ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (zero)
-    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))
-    case ((zero, zero)) of
-      (e0, e1) -> do
-        poke (pDstOffsets' :: Ptr Offset3D) (e0)
-        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    f
-
-instance FromCStruct ImageBlit where
-  peekCStruct p = do
-    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))
-    let psrcOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))
-    srcOffsets0 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
-    srcOffsets1 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
-    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers))
-    let pdstOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))
-    dstOffsets0 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
-    dstOffsets1 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
-    pure $ ImageBlit
-             srcSubresource ((srcOffsets0, srcOffsets1)) dstSubresource ((dstOffsets0, dstOffsets1))
-
-instance Storable ImageBlit where
-  sizeOf ~_ = 80
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageBlit where
-  zero = ImageBlit
-           zero
-           (zero, zero)
-           zero
-           (zero, zero)
-
-
--- | VkBufferImageCopy - Structure specifying a buffer image copy operation
---
--- = Description
---
--- When copying to or from a depth or stencil aspect, the data in buffer
--- memory uses a layout that is a (mostly) tightly packed representation of
--- the depth or stencil data. Specifically:
---
--- -   data copied to or from the stencil aspect of any depth\/stencil
---     format is tightly packed with one
---     'Vulkan.Core10.Enums.Format.FORMAT_S8_UINT' value per texel.
---
--- -   data copied to or from the depth aspect of a
---     'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM' or
---     'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM_S8_UINT' format is
---     tightly packed with one
---     'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM' value per texel.
---
--- -   data copied to or from the depth aspect of a
---     'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT' or
---     'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT_S8_UINT' format is
---     tightly packed with one
---     'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT' value per texel.
---
--- -   data copied to or from the depth aspect of a
---     'Vulkan.Core10.Enums.Format.FORMAT_X8_D24_UNORM_PACK32' or
---     'Vulkan.Core10.Enums.Format.FORMAT_D24_UNORM_S8_UINT' format is
---     packed with one 32-bit word per texel with the D24 value in the LSBs
---     of the word, and undefined values in the eight MSBs.
---
--- Note
---
--- To copy both the depth and stencil aspects of a depth\/stencil format,
--- two entries in @pRegions@ /can/ be used, where one specifies the depth
--- aspect in @imageSubresource@, and the other specifies the stencil
--- aspect.
---
--- Because depth or stencil aspect buffer to image copies /may/ require
--- format conversions on some implementations, they are not supported on
--- queues that do not support graphics.
---
--- When copying to a depth aspect, and the
--- @VK_EXT_depth_range_unrestricted@ extension is not enabled, the data in
--- buffer memory /must/ be in the range [0,1], or the resulting values are
--- undefined.
---
--- Copies are done layer by layer starting with image layer
--- @baseArrayLayer@ member of @imageSubresource@. @layerCount@ layers are
--- copied from the source image or to the destination image.
---
--- For purpose of valid usage statements here and in related copy commands,
--- a /blocked image/ is defined as:
---
--- -   an image with a /single-plane/, “@_422@” format, which is treated as
---     a format with a 2 × 1 compressed texel block, or
---
--- -   a compressed image.
---
--- == Valid Usage
---
--- -   #VUID-VkBufferImageCopy-bufferRowLength-00195# @bufferRowLength@
---     /must/ be @0@, or greater than or equal to the @width@ member of
---     @imageExtent@
---
--- -   #VUID-VkBufferImageCopy-bufferImageHeight-00196# @bufferImageHeight@
---     /must/ be @0@, or greater than or equal to the @height@ member of
---     @imageExtent@
---
--- -   #VUID-VkBufferImageCopy-aspectMask-00212# The @aspectMask@ member of
---     @imageSubresource@ /must/ only have a single bit set
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBufferImageCopy-imageSubresource-parameter#
---     @imageSubresource@ /must/ be a valid 'ImageSubresourceLayers'
---     structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyBufferToImage',
--- 'cmdCopyImageToBuffer'
-data BufferImageCopy = BufferImageCopy
-  { -- | @bufferOffset@ is the offset in bytes from the start of the buffer
-    -- object where the image data is copied from or to.
-    bufferOffset :: DeviceSize
-  , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion
-    -- of a larger two- or three-dimensional image in buffer memory, and
-    -- control the addressing calculations. If either of these values is zero,
-    -- that aspect of the buffer memory is considered to be tightly packed
-    -- according to the @imageExtent@.
-    bufferRowLength :: Word32
-  , -- No documentation found for Nested "VkBufferImageCopy" "bufferImageHeight"
-    bufferImageHeight :: Word32
-  , -- | @imageSubresource@ is a 'ImageSubresourceLayers' used to specify the
-    -- specific image subresources of the image used for the source or
-    -- destination image data.
-    imageSubresource :: ImageSubresourceLayers
-  , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the
-    -- sub-region of the source or destination image data.
-    imageOffset :: Offset3D
-  , -- | @imageExtent@ is the size in texels of the image to copy in @width@,
-    -- @height@ and @depth@.
-    imageExtent :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferImageCopy)
-#endif
-deriving instance Show BufferImageCopy
-
-instance ToCStruct BufferImageCopy where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferImageCopy{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (bufferOffset)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset)
-    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent)
-    f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct BufferImageCopy where
-  peekCStruct p = do
-    bufferOffset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))
-    bufferRowLength <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    bufferImageHeight <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
-    imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
-    imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
-    imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 44 :: Ptr Extent3D))
-    pure $ BufferImageCopy
-             bufferOffset bufferRowLength bufferImageHeight imageSubresource imageOffset imageExtent
-
-instance Storable BufferImageCopy where
-  sizeOf ~_ = 56
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BufferImageCopy where
-  zero = BufferImageCopy
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageResolve - Structure specifying an image resolve operation
---
--- == Valid Usage
---
--- -   #VUID-VkImageResolve-aspectMask-00266# The @aspectMask@ member of
---     @srcSubresource@ and @dstSubresource@ /must/ only contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageResolve-layerCount-00267# The @layerCount@ member of
---     @srcSubresource@ and @dstSubresource@ /must/ match
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageResolve-srcSubresource-parameter# @srcSubresource@
---     /must/ be a valid 'ImageSubresourceLayers' structure
---
--- -   #VUID-VkImageResolve-dstSubresource-parameter# @dstSubresource@
---     /must/ be a valid 'ImageSubresourceLayers' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdResolveImage'
-data ImageResolve = ImageResolve
-  { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers'
-    -- structures specifying the image subresources of the images used for the
-    -- source and destination image data, respectively. Resolve of
-    -- depth\/stencil images is not supported.
-    srcSubresource :: ImageSubresourceLayers
-  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
-    -- in texels of the sub-regions of the source and destination image data.
-    srcOffset :: Offset3D
-  , -- No documentation found for Nested "VkImageResolve" "dstSubresource"
-    dstSubresource :: ImageSubresourceLayers
-  , -- No documentation found for Nested "VkImageResolve" "dstOffset"
-    dstOffset :: Offset3D
-  , -- | @extent@ is the size in texels of the source image to resolve in
-    -- @width@, @height@ and @depth@.
-    extent :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageResolve)
-#endif
-deriving instance Show ImageResolve
-
-instance ToCStruct ImageResolve where
-  withCStruct x f = allocaBytes 68 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageResolve{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)
-    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset)
-    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource)
-    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset)
-    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (extent)
-    f
-  cStructSize = 68
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct ImageResolve where
-  peekCStruct p = do
-    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))
-    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D))
-    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers))
-    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D))
-    extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D))
-    pure $ ImageResolve
-             srcSubresource srcOffset dstSubresource dstOffset extent
-
-instance Storable ImageResolve where
-  sizeOf ~_ = 68
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageResolve where
-  zero = ImageResolve
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkRenderPassBeginInfo - Structure specifying render pass begin
--- information
---
--- = Description
---
--- @renderArea@ is the render area that is affected by the render pass
--- instance. The effects of attachment load, store and multisample resolve
--- operations are restricted to the pixels whose x and y coordinates fall
--- within the render area on all attachments. The render area extends to
--- all layers of @framebuffer@. The application /must/ ensure (using
--- scissor if necessary) that all rendering is contained within the render
--- area. The render area, after any transform specified by
--- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@
--- is applied, /must/ be contained within the framebuffer dimensions.
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>
--- is enabled, then @renderArea@ /must/ equal the framebuffer
--- pre-transformed dimensions. After @renderArea@ has been transformed by
--- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@,
--- the resulting render area /must/ be equal to the framebuffer dimensions.
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
--- is enabled, then @renderArea@ /must/ equal the framebuffer dimensions.
---
--- When multiview is enabled, the resolve operation at the end of a subpass
--- applies to all views in the view mask.
---
--- Note
---
--- There /may/ be a performance cost for using a render area smaller than
--- the framebuffer, unless it matches the render area granularity for the
--- render pass.
---
--- == Valid Usage
---
--- -   #VUID-VkRenderPassBeginInfo-clearValueCount-00902# @clearValueCount@
---     /must/ be greater than the largest attachment index in @renderPass@
---     specifying a @loadOp@ (or @stencilLoadOp@, if the attachment has a
---     depth\/stencil format) of
---     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
---
--- -   #VUID-VkRenderPassBeginInfo-clearValueCount-04962# If
---     @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid
---     pointer to an array of @clearValueCount@ 'ClearValue' unions
---
--- -   #VUID-VkRenderPassBeginInfo-renderPass-00904# @renderPass@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
---     with the @renderPass@ member of the
---     'Vulkan.Core10.Pass.FramebufferCreateInfo' structure specified when
---     creating @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02850# If the @pNext@ chain does
---     not contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0,
---     @renderArea.offset.x@ /must/ be greater than or equal to 0
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02851# If the @pNext@ chain does
---     not contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0,
---     @renderArea.offset.y@ /must/ be greater than or equal to 0
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02852# If the @pNext@ chain does
---     not contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0,
---     @renderArea.offset.x@ + @renderArea.extent.width@ /must/ be less
---     than or equal to 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@
---     the @framebuffer@ was created with
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02853# If the @pNext@ chain does
---     not contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0,
---     @renderArea.offset.y@ + @renderArea.extent.height@ /must/ be less
---     than or equal to
---     'Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the
---     @framebuffer@ was created with
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02856# If the @pNext@ chain
---     contains
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
---     @offset.x@ + @extent.width@ of each element of @pDeviceRenderAreas@
---     /must/ be less than or equal to
---     'Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@ the
---     @framebuffer@ was created with
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02857# If the @pNext@ chain
---     contains
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
---     @offset.y@ + @extent.height@ of each element of @pDeviceRenderAreas@
---     /must/ be less than or equal to
---     'Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the
---     @framebuffer@ was created with
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03207# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that did not include
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     and the @pNext@ chain includes a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure, its @attachmentCount@ /must/ be zero
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03208# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     the @attachmentCount@ of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be equal to the value
---     of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@attachmentImageInfoCount@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-02780# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ have been created on
---     the same 'Vulkan.Core10.Handles.Device' as @framebuffer@ and
---     @renderPass@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03209# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' of an image created with a value
---     of 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ equal to the
---     @flags@ member of the corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-04627# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-inherited-usage an inherited usage>
---     equal to the @usage@ member of the corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03211# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' with a width equal to the @width@
---     member of the corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03212# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' with a height equal to the
---     @height@ member of the corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03213# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' of an image created with a value
---     of
---     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@subresourceRange.layerCount@
---     equal to the @layerCount@ member of the corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03214# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' of an image created with a value
---     of
---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
---     equal to the @viewFormatCount@ member of the corresponding element
---     of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03215# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' of an image created with a set of
---     elements in
---     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
---     equal to the set of elements in the @pViewFormats@ member of the
---     corresponding element of
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
---     used to create @framebuffer@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03216# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' of an image created with a value
---     of 'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@format@ equal to
---     the corresponding value of
---     'Vulkan.Core10.Pass.AttachmentDescription'::@format@ in @renderPass@
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-03217# If @framebuffer@ was
---     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
---     value that included
---     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
---     each element of the @pAttachments@ member of a
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
---     structure included in the @pNext@ chain /must/ be a
---     'Vulkan.Core10.Handles.ImageView' of an image created with a value
---     of 'Vulkan.Core10.Image.ImageCreateInfo'::@samples@ equal to the
---     corresponding value of
---     'Vulkan.Core10.Pass.AttachmentDescription'::@samples@ in
---     @renderPass@
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02869# If the @pNext@ chain
---     includes
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
---     @renderArea.offset@ /must/ equal (0,0)
---
--- -   #VUID-VkRenderPassBeginInfo-pNext-02870# If the @pNext@ chain
---     includes
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
---     @renderArea.extent@ transformed by
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@
---     /must/ equal the @framebuffer@ dimensions
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRenderPassBeginInfo-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO'
---
--- -   #VUID-VkRenderPassBeginInfo-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.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
---     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',
---     'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',
---     or
---     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
---
--- -   #VUID-VkRenderPassBeginInfo-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkRenderPassBeginInfo-renderPass-parameter# @renderPass@
---     /must/ be a valid 'Vulkan.Core10.Handles.RenderPass' handle
---
--- -   #VUID-VkRenderPassBeginInfo-framebuffer-parameter# @framebuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Framebuffer' handle
---
--- -   #VUID-VkRenderPassBeginInfo-commonparent# Both of @framebuffer@, and
---     @renderPass@ /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_VERSION_1_0 VK_VERSION_1_0>,
--- 'ClearValue', 'Vulkan.Core10.Handles.Framebuffer',
--- 'Vulkan.Core10.FundamentalTypes.Rect2D',
--- 'Vulkan.Core10.Handles.RenderPass',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBeginRenderPass',
--- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',
--- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR'
-data RenderPassBeginInfo (es :: [Type]) = RenderPassBeginInfo
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @renderPass@ is the render pass to begin an instance of.
-    renderPass :: RenderPass
-  , -- | @framebuffer@ is the framebuffer containing the attachments that are
-    -- used with the render pass.
-    framebuffer :: Framebuffer
-  , -- | @renderArea@ is the render area that is affected by the render pass
-    -- instance, and is described in more detail below.
-    renderArea :: Rect2D
-  , -- | @pClearValues@ is a pointer to an array of @clearValueCount@
-    -- 'ClearValue' structures containing clear values for each attachment, if
-    -- the attachment uses a @loadOp@ value of
-    -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' or if
-    -- the attachment has a depth\/stencil format and uses a @stencilLoadOp@
-    -- value of
-    -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'. The
-    -- array is indexed by attachment number. Only elements corresponding to
-    -- cleared attachments are used. Other elements of @pClearValues@ are
-    -- ignored.
-    clearValues :: Vector ClearValue
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderPassBeginInfo (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (RenderPassBeginInfo es)
-
-instance Extensible RenderPassBeginInfo where
-  extensibleTypeName = "RenderPassBeginInfo"
-  setNext RenderPassBeginInfo{..} next' = RenderPassBeginInfo{next = next', ..}
-  getNext RenderPassBeginInfo{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassBeginInfo e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @RenderPassTransformBeginInfoQCOM = Just f
-    | Just Refl <- eqT @e @RenderPassAttachmentBeginInfo = Just f
-    | Just Refl <- eqT @e @RenderPassSampleLocationsBeginInfoEXT = Just f
-    | Just Refl <- eqT @e @DeviceGroupRenderPassBeginInfo = Just f
-    | otherwise = Nothing
-
-instance (Extendss RenderPassBeginInfo es, PokeChain es) => ToCStruct (RenderPassBeginInfo es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderPassBeginInfo{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (renderPass)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (framebuffer)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (renderArea)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (clearValues)) :: Word32))
-    pPClearValues' <- ContT $ allocaBytes @ClearValue ((Data.Vector.length (clearValues)) * 16)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPClearValues' `plusPtr` (16 * (i)) :: Ptr ClearValue) (e) . ($ ())) (clearValues)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr ClearValue))) (pPClearValues')
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (zero)
-    lift $ f
-
-instance es ~ '[] => Zero (RenderPassBeginInfo es) where
-  zero = RenderPassBeginInfo
-           ()
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkClearDepthStencilValue - Structure specifying a clear depth stencil
--- value
---
--- == Valid Usage
---
--- -   #VUID-VkClearDepthStencilValue-depth-00022# Unless the
---     @VK_EXT_depth_range_unrestricted@ extension is enabled @depth@
---     /must/ be between @0.0@ and @1.0@, inclusive
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ClearValue', 'cmdClearDepthStencilImage'
-data ClearDepthStencilValue = ClearDepthStencilValue
-  { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil
-    -- attachment. It is a floating-point value which is automatically
-    -- converted to the attachment’s format.
-    depth :: Float
-  , -- | @stencil@ is the clear value for the stencil aspect of the
-    -- depth\/stencil attachment. It is a 32-bit integer value which is
-    -- converted to the attachment’s format by taking the appropriate number of
-    -- LSBs.
-    stencil :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ClearDepthStencilValue)
-#endif
-deriving instance Show ClearDepthStencilValue
-
-instance ToCStruct ClearDepthStencilValue where
-  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ClearDepthStencilValue{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (depth))
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (stencil)
-    f
-  cStructSize = 8
-  cStructAlignment = 4
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
-    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct ClearDepthStencilValue where
-  peekCStruct p = do
-    depth <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
-    stencil <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
-    pure $ ClearDepthStencilValue
-             (coerce @CFloat @Float depth) stencil
-
-instance Storable ClearDepthStencilValue where
-  sizeOf ~_ = 8
-  alignment ~_ = 4
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ClearDepthStencilValue where
-  zero = ClearDepthStencilValue
-           zero
-           zero
-
-
--- | VkClearAttachment - Structure specifying a clear attachment
---
--- == Valid Usage
---
--- -   #VUID-VkClearAttachment-aspectMask-00019# If @aspectMask@ includes
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it
---     /must/ not include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-VkClearAttachment-aspectMask-00020# @aspectMask@ /must/ not
---     include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'
---
--- -   #VUID-VkClearAttachment-aspectMask-02246# @aspectMask@ /must/ not
---     include @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index /i/
---
--- -   #VUID-VkClearAttachment-clearValue-00021# @clearValue@ /must/ be a
---     valid 'ClearValue' union
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkClearAttachment-aspectMask-parameter# @aspectMask@ /must/ be
---     a valid combination of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
---
--- -   #VUID-VkClearAttachment-aspectMask-requiredbitmask# @aspectMask@
---     /must/ not be @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
--- 'ClearValue',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
--- 'cmdClearAttachments'
-data ClearAttachment = ClearAttachment
-  { -- | @aspectMask@ is a mask selecting the color, depth and\/or stencil
-    -- aspects of the attachment to be cleared.
-    aspectMask :: ImageAspectFlags
-  , -- | @colorAttachment@ is only meaningful if
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' is set
-    -- in @aspectMask@, in which case it is an index into the currently bound
-    -- color attachments.
-    colorAttachment :: Word32
-  , -- | @clearValue@ is the color or depth\/stencil value to clear the
-    -- attachment to, as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears-values Clear Values>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#dispatch dispatching commands>.
+--
+-- -   The pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     controls the behavior of all
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing drawing commands>.
+--
+-- -   The pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR'
+--     controls the behavior of
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR' and
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'.
+--
+-- -   The pipeline bound to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'
+--     controls the behavior of
+--     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.cmdSubpassShadingHUAWEI'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00777# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support compute operations
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00778# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00779# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_COMPUTE',
+--     @pipeline@ /must/ be a compute pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-00780# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
+--     @pipeline@ /must/ be a graphics pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-pipeline-00781# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-variableMultisampleRate variable multisample rate>
+--     feature is not supported, @pipeline@ is a graphics pipeline, the
+--     current subpass
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-noattachments uses no attachments>,
+--     and this is not the first call to this function with a graphics
+--     pipeline after transitioning to the current subpass, then the sample
+--     count specified by this pipeline /must/ match that set in the
+--     previous pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-variableSampleLocations-01525# If
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PhysicalDeviceSampleLocationsPropertiesEXT'::@variableSampleLocations@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and @pipeline@ is a
+--     graphics pipeline created with a
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
+--     structure having its @sampleLocationsEnable@ member set to
+--     'Vulkan.Core10.FundamentalTypes.TRUE' but without
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT'
+--     enabled then the current render pass instance /must/ have been begun
+--     by specifying a
+--     'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT'
+--     structure whose @pPostSubpassSampleLocations@ member contains an
+--     element with a @subpassIndex@ matching the current subpass index and
+--     the @sampleLocationsInfo@ member of that element /must/ match the
+--     @sampleLocationsInfo@ specified in
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
+--     when the pipeline was created
+--
+-- -   #VUID-vkCmdBindPipeline-None-02323# This command /must/ not be
+--     recorded when transform feedback is active
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-02391# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR',
+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support compute operations
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-02392# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_RAY_TRACING_KHR',
+--     @pipeline@ /must/ be a ray tracing pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-pipeline-03382# @pipeline@ /must/ not have
+--     been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
+--     set
+--
+-- -   #VUID-vkCmdBindPipeline-commandBuffer-04808# If @commandBuffer@ is a
+--     secondary command buffer with
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled and @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS',
+--     then the @pipeline@ /must/ have been created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT', and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' enabled
+--
+-- -   #VUID-vkCmdBindPipeline-commandBuffer-04809# If @commandBuffer@ is a
+--     secondary command buffer with
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled and @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     and @pipeline@ was created with
+--     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT'
+--     structure and its @discardRectangleCount@ member is not @0@, then
+--     the pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
+--     enabled
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04881# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--     and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>
+--     limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then pipeline’s
+--     'Vulkan.Extensions.VK_EXT_provoking_vertex.PipelineRasterizationProvokingVertexStateCreateInfoEXT'::@provokingVertexMode@
+--     /must/ be the same as that of any other pipelines previously bound
+--     to this bind point within the current render pass instance,
+--     including any pipeline already bound when beginning the render pass
+--     instance
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04949# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',
+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support compute operations
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-04950# If
+--     @pipelineBindPoint@ is
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI',
+--     @pipeline@ /must/ be a subpass shading pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-pipeline-06195# If @pipeline@ is a graphics
+--     pipeline, this command has been called inside a render pass instance
+--     started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and commands using the previously bound graphics pipeline have been
+--     recorded within the render pass instance, then the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     specified by this pipeline /must/ match that set in the previous
+--     pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-pipeline-06196# If @pipeline@ is a graphics
+--     pipeline, this command has been called inside a render pass instance
+--     started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and commands using the previously bound graphics pipeline have been
+--     recorded within the render pass instance, then the elements of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     specified by this pipeline /must/ match that set in the previous
+--     pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-pipeline-06197# If @pipeline@ is a graphics
+--     pipeline, this command has been called inside a render pass instance
+--     started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and commands using the previously bound graphics pipeline have been
+--     recorded within the render pass instance, then the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     specified by this pipeline /must/ match that set in the previous
+--     pipeline
+--
+-- -   #VUID-vkCmdBindPipeline-pipeline-06194# If @pipeline@ is a graphics
+--     pipeline, this command has been called inside a render pass instance
+--     started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     and commands using the previously bound graphics pipeline have been
+--     recorded within the render pass instance, then the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     specified by this pipeline /must/ match that set in the previous
+--     pipeline
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindPipeline-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindPipeline-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-vkCmdBindPipeline-pipeline-parameter# @pipeline@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Pipeline' handle
+--
+-- -   #VUID-vkCmdBindPipeline-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-vkCmdBindPipeline-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdBindPipeline-commonparent# Both of @commandBuffer@, and
+--     @pipeline@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Pipeline',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint'
+cmdBindPipeline :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer that the pipeline will be bound
+                   -- to.
+                   CommandBuffer
+                -> -- | @pipelineBindPoint@ is a
+                   -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+                   -- specifying to which bind point the pipeline is bound. Binding one does
+                   -- not disturb the others.
+                   PipelineBindPoint
+                -> -- | @pipeline@ is the pipeline to be bound.
+                   Pipeline
+                -> io ()
+cmdBindPipeline commandBuffer pipelineBindPoint pipeline = liftIO $ do
+  let vkCmdBindPipelinePtr = pVkCmdBindPipeline (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBindPipelinePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindPipeline is null" Nothing Nothing
+  let vkCmdBindPipeline' = mkVkCmdBindPipeline vkCmdBindPipelinePtr
+  traceAroundEvent "vkCmdBindPipeline" (vkCmdBindPipeline' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (pipeline))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetViewport
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Viewport -> IO ()
+
+-- | vkCmdSetViewport - Set the viewport dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the viewport transformation parameters state for
+-- subsequent drawing commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pViewports@
+-- values used to create the currently active pipeline.
+--
+-- The viewport parameters taken from element i of @pViewports@ replace the
+-- current state for the viewport index @firstViewport@ + i, for i in [0,
+-- @viewportCount@).
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetViewport-firstViewport-01223# The sum of
+--     @firstViewport@ and @viewportCount@ /must/ be between @1@ and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
+--     inclusive
+--
+-- -   #VUID-vkCmdSetViewport-firstViewport-01224# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     feature is not enabled, @firstViewport@ /must/ be @0@
+--
+-- -   #VUID-vkCmdSetViewport-viewportCount-01225# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     feature is not enabled, @viewportCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdSetViewport-commandBuffer-04821# @commandBuffer@ /must/
+--     not have
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetViewport-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetViewport-pViewports-parameter# @pViewports@ /must/ be
+--     a valid pointer to an array of @viewportCount@ valid
+--     'Vulkan.Core10.Pipeline.Viewport' structures
+--
+-- -   #VUID-vkCmdSetViewport-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-vkCmdSetViewport-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdSetViewport-viewportCount-arraylength# @viewportCount@
+--     /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Pipeline.Viewport'
+cmdSetViewport :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer into which the command will be
+                  -- recorded.
+                  CommandBuffer
+               -> -- | @firstViewport@ is the index of the first viewport whose parameters are
+                  -- updated by the command.
+                  ("firstViewport" ::: Word32)
+               -> -- | @pViewports@ is a pointer to an array of
+                  -- 'Vulkan.Core10.Pipeline.Viewport' structures specifying viewport
+                  -- parameters.
+                  ("viewports" ::: Vector Viewport)
+               -> io ()
+cmdSetViewport commandBuffer firstViewport viewports = liftIO . evalContT $ do
+  let vkCmdSetViewportPtr = pVkCmdSetViewport (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetViewportPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewport is null" Nothing Nothing
+  let vkCmdSetViewport' = mkVkCmdSetViewport vkCmdSetViewportPtr
+  pPViewports <- ContT $ allocaBytes @Viewport ((Data.Vector.length (viewports)) * 24)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)
+  lift $ traceAroundEvent "vkCmdSetViewport" (vkCmdSetViewport' (commandBufferHandle (commandBuffer)) (firstViewport) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetScissor
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Rect2D -> IO ()
+
+-- | vkCmdSetScissor - Set scissor rectangles dynamically for a command
+-- buffer
+--
+-- = Description
+--
+-- The scissor rectangles taken from element i of @pScissors@ replace the
+-- current state for the scissor index @firstScissor@ + i, for i in [0,
+-- @scissorCount@).
+--
+-- This command sets the scissor rectangles for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@pScissors@
+-- values used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetScissor-firstScissor-00592# The sum of @firstScissor@
+--     and @scissorCount@ /must/ be between @1@ and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
+--     inclusive
+--
+-- -   #VUID-vkCmdSetScissor-firstScissor-00593# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     feature is not enabled, @firstScissor@ /must/ be @0@
+--
+-- -   #VUID-vkCmdSetScissor-scissorCount-00594# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     feature is not enabled, @scissorCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdSetScissor-x-00595# The @x@ and @y@ members of @offset@
+--     member of any element of @pScissors@ /must/ be greater than or equal
+--     to @0@
+--
+-- -   #VUID-vkCmdSetScissor-offset-00596# Evaluation of (@offset.x@ +
+--     @extent.width@) /must/ not cause a signed integer addition overflow
+--     for any element of @pScissors@
+--
+-- -   #VUID-vkCmdSetScissor-offset-00597# Evaluation of (@offset.y@ +
+--     @extent.height@) /must/ not cause a signed integer addition overflow
+--     for any element of @pScissors@
+--
+-- -   #VUID-vkCmdSetScissor-viewportScissor2D-04789# If this command is
+--     recorded in a secondary command buffer with
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled, then this function /must/ not be called
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetScissor-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetScissor-pScissors-parameter# @pScissors@ /must/ be a
+--     valid pointer to an array of @scissorCount@
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
+-- -   #VUID-vkCmdSetScissor-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-vkCmdSetScissor-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdSetScissor-scissorCount-arraylength# @scissorCount@
+--     /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'
+cmdSetScissor :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which the command will be
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @firstScissor@ is the index of the first scissor whose state is updated
+                 -- by the command.
+                 ("firstScissor" ::: Word32)
+              -> -- | @pScissors@ is a pointer to an array of
+                 -- 'Vulkan.Core10.FundamentalTypes.Rect2D' structures defining scissor
+                 -- rectangles.
+                 ("scissors" ::: Vector Rect2D)
+              -> io ()
+cmdSetScissor commandBuffer firstScissor scissors = liftIO . evalContT $ do
+  let vkCmdSetScissorPtr = pVkCmdSetScissor (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetScissorPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissor is null" Nothing Nothing
+  let vkCmdSetScissor' = mkVkCmdSetScissor vkCmdSetScissorPtr
+  pPScissors <- ContT $ allocaBytes @Rect2D ((Data.Vector.length (scissors)) * 16)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)
+  lift $ traceAroundEvent "vkCmdSetScissor" (vkCmdSetScissor' (commandBufferHandle (commandBuffer)) (firstScissor) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetLineWidth
+  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> IO ()
+
+-- | vkCmdSetLineWidth - Set line width dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the line width for subsequent drawing commands when
+-- the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@lineWidth@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetLineWidth-lineWidth-00788# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-wideLines wide lines>
+--     feature is not enabled, @lineWidth@ /must/ be @1.0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetLineWidth-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetLineWidth-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-vkCmdSetLineWidth-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetLineWidth :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command will be
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @lineWidth@ is the width of rasterized line segments.
+                   ("lineWidth" ::: Float)
+                -> io ()
+cmdSetLineWidth commandBuffer lineWidth = liftIO $ do
+  let vkCmdSetLineWidthPtr = pVkCmdSetLineWidth (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetLineWidthPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetLineWidth is null" Nothing Nothing
+  let vkCmdSetLineWidth' = mkVkCmdSetLineWidth vkCmdSetLineWidthPtr
+  traceAroundEvent "vkCmdSetLineWidth" (vkCmdSetLineWidth' (commandBufferHandle (commandBuffer)) (CFloat (lineWidth)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthBias
+  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> CFloat -> IO ()
+
+-- | vkCmdSetDepthBias - Set depth bias factors and clamp dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the depth bias parameters for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the corresponding
+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@depthBiasConstantFactor@,
+-- @depthBiasClamp@, and @depthBiasSlopeFactor@ values used to create the
+-- currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthBias-depthBiasClamp-00790# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBiasClamp depth bias clamping>
+--     feature is not enabled, @depthBiasClamp@ /must/ be @0.0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthBias-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthBias-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-vkCmdSetDepthBias-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetDepthBias :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command will be
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @depthBiasConstantFactor@ is a scalar factor controlling the constant
+                   -- depth value added to each fragment.
+                   ("depthBiasConstantFactor" ::: Float)
+                -> -- | @depthBiasClamp@ is the maximum (or minimum) depth bias of a fragment.
+                   ("depthBiasClamp" ::: Float)
+                -> -- | @depthBiasSlopeFactor@ is a scalar factor applied to a fragment’s slope
+                   -- in depth bias calculations.
+                   ("depthBiasSlopeFactor" ::: Float)
+                -> io ()
+cmdSetDepthBias commandBuffer depthBiasConstantFactor depthBiasClamp depthBiasSlopeFactor = liftIO $ do
+  let vkCmdSetDepthBiasPtr = pVkCmdSetDepthBias (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetDepthBiasPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBias is null" Nothing Nothing
+  let vkCmdSetDepthBias' = mkVkCmdSetDepthBias vkCmdSetDepthBiasPtr
+  traceAroundEvent "vkCmdSetDepthBias" (vkCmdSetDepthBias' (commandBufferHandle (commandBuffer)) (CFloat (depthBiasConstantFactor)) (CFloat (depthBiasClamp)) (CFloat (depthBiasSlopeFactor)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetBlendConstants
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (FixedArray 4 CFloat) -> IO ()
+
+-- | vkCmdSetBlendConstants - Set the values of blend constants
+--
+-- = Description
+--
+-- This command sets blend constants for subsequent drawing commands when
+-- the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_BLEND_CONSTANTS' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo'::@blendConstants@
+-- values used to create the currently active pipeline.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetBlendConstants-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetBlendConstants-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-vkCmdSetBlendConstants-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetBlendConstants :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @blendConstants@ is a pointer to an array of four values specifying the
+                        -- Rc, Gc, Bc, and Ac components of the blend constant color used in
+                        -- blending, depending on the
+                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.
+                        ("blendConstants" ::: (Float, Float, Float, Float))
+                     -> io ()
+cmdSetBlendConstants commandBuffer blendConstants = liftIO . evalContT $ do
+  let vkCmdSetBlendConstantsPtr = pVkCmdSetBlendConstants (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetBlendConstantsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetBlendConstants is null" Nothing Nothing
+  let vkCmdSetBlendConstants' = mkVkCmdSetBlendConstants vkCmdSetBlendConstantsPtr
+  pBlendConstants <- ContT $ allocaBytes @(FixedArray 4 CFloat) 16
+  let pBlendConstants' = lowerArrayPtr pBlendConstants
+  lift $ case (blendConstants) of
+    (e0, e1, e2, e3) -> do
+      poke (pBlendConstants' :: Ptr CFloat) (CFloat (e0))
+      poke (pBlendConstants' `plusPtr` 4 :: Ptr CFloat) (CFloat (e1))
+      poke (pBlendConstants' `plusPtr` 8 :: Ptr CFloat) (CFloat (e2))
+      poke (pBlendConstants' `plusPtr` 12 :: Ptr CFloat) (CFloat (e3))
+  lift $ traceAroundEvent "vkCmdSetBlendConstants" (vkCmdSetBlendConstants' (commandBufferHandle (commandBuffer)) (pBlendConstants))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthBounds
+  :: FunPtr (Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()) -> Ptr CommandBuffer_T -> CFloat -> CFloat -> IO ()
+
+-- | vkCmdSetDepthBounds - Set depth bounds range dynamically for a command
+-- buffer
+--
+-- = Description
+--
+-- This command sets the depth bounds range for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@minDepthBounds@
+-- and
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@maxDepthBounds@
+-- values used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthBounds-minDepthBounds-00600# Unless the
+--     @VK_EXT_depth_range_unrestricted@ extension is enabled
+--     @minDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive
+--
+-- -   #VUID-vkCmdSetDepthBounds-maxDepthBounds-00601# Unless the
+--     @VK_EXT_depth_range_unrestricted@ extension is enabled
+--     @maxDepthBounds@ /must/ be between @0.0@ and @1.0@, inclusive
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthBounds-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthBounds-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-vkCmdSetDepthBounds-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetDepthBounds :: forall io
+                   . (MonadIO io)
+                  => -- | @commandBuffer@ is the command buffer into which the command will be
+                     -- recorded.
+                     CommandBuffer
+                  -> -- | @minDepthBounds@ is the minimum depth bound.
+                     ("minDepthBounds" ::: Float)
+                  -> -- | @maxDepthBounds@ is the maximum depth bound.
+                     ("maxDepthBounds" ::: Float)
+                  -> io ()
+cmdSetDepthBounds commandBuffer minDepthBounds maxDepthBounds = liftIO $ do
+  let vkCmdSetDepthBoundsPtr = pVkCmdSetDepthBounds (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetDepthBoundsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBounds is null" Nothing Nothing
+  let vkCmdSetDepthBounds' = mkVkCmdSetDepthBounds vkCmdSetDepthBoundsPtr
+  traceAroundEvent "vkCmdSetDepthBounds" (vkCmdSetDepthBounds' (commandBufferHandle (commandBuffer)) (CFloat (minDepthBounds)) (CFloat (maxDepthBounds)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilCompareMask
+  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()
+
+-- | vkCmdSetStencilCompareMask - Set stencil compare mask dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the stencil compare mask for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_COMPARE_MASK'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@compareMask@
+-- value used to create the currently active pipeline, for both front and
+-- back faces.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetStencilCompareMask-faceMask-parameter# @faceMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
+--
+-- -   #VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask#
+--     @faceMask@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdSetStencilCompareMask-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-vkCmdSetStencilCompareMask-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'
+cmdSetStencilCompareMask :: forall io
+                          . (MonadIO io)
+                         => -- | @commandBuffer@ is the command buffer into which the command will be
+                            -- recorded.
+                            CommandBuffer
+                         -> -- | @faceMask@ is a bitmask of
+                            -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
+                            -- the set of stencil state for which to update the compare mask.
+                            ("faceMask" ::: StencilFaceFlags)
+                         -> -- | @compareMask@ is the new value to use as the stencil compare mask.
+                            ("compareMask" ::: Word32)
+                         -> io ()
+cmdSetStencilCompareMask commandBuffer faceMask compareMask = liftIO $ do
+  let vkCmdSetStencilCompareMaskPtr = pVkCmdSetStencilCompareMask (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetStencilCompareMaskPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilCompareMask is null" Nothing Nothing
+  let vkCmdSetStencilCompareMask' = mkVkCmdSetStencilCompareMask vkCmdSetStencilCompareMaskPtr
+  traceAroundEvent "vkCmdSetStencilCompareMask" (vkCmdSetStencilCompareMask' (commandBufferHandle (commandBuffer)) (faceMask) (compareMask))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilWriteMask
+  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()
+
+-- | vkCmdSetStencilWriteMask - Set stencil write mask dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the stencil write mask for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_WRITE_MASK' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@writeMask@
+-- value used to create the currently active pipeline, for both front and
+-- back faces.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetStencilWriteMask-faceMask-parameter# @faceMask@ /must/
+--     be a valid combination of
+--     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
+--
+-- -   #VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask# @faceMask@
+--     /must/ not be @0@
+--
+-- -   #VUID-vkCmdSetStencilWriteMask-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-vkCmdSetStencilWriteMask-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'
+cmdSetStencilWriteMask :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer into which the command will be
+                          -- recorded.
+                          CommandBuffer
+                       -> -- | @faceMask@ is a bitmask of
+                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
+                          -- the set of stencil state for which to update the write mask, as
+                          -- described above for 'cmdSetStencilCompareMask'.
+                          ("faceMask" ::: StencilFaceFlags)
+                       -> -- | @writeMask@ is the new value to use as the stencil write mask.
+                          ("writeMask" ::: Word32)
+                       -> io ()
+cmdSetStencilWriteMask commandBuffer faceMask writeMask = liftIO $ do
+  let vkCmdSetStencilWriteMaskPtr = pVkCmdSetStencilWriteMask (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetStencilWriteMaskPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilWriteMask is null" Nothing Nothing
+  let vkCmdSetStencilWriteMask' = mkVkCmdSetStencilWriteMask vkCmdSetStencilWriteMaskPtr
+  traceAroundEvent "vkCmdSetStencilWriteMask" (vkCmdSetStencilWriteMask' (commandBufferHandle (commandBuffer)) (faceMask) (writeMask))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilReference
+  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> Word32 -> IO ()
+
+-- | vkCmdSetStencilReference - Set stencil reference value dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the stencil reference value for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_REFERENCE' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@reference@
+-- value used to create the currently active pipeline, for both front and
+-- back faces.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetStencilReference-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetStencilReference-faceMask-parameter# @faceMask@ /must/
+--     be a valid combination of
+--     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
+--
+-- -   #VUID-vkCmdSetStencilReference-faceMask-requiredbitmask# @faceMask@
+--     /must/ not be @0@
+--
+-- -   #VUID-vkCmdSetStencilReference-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-vkCmdSetStencilReference-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags'
+cmdSetStencilReference :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer into which the command will be
+                          -- recorded.
+                          CommandBuffer
+                       -> -- | @faceMask@ is a bitmask of
+                          -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
+                          -- the set of stencil state for which to update the reference value, as
+                          -- described above for 'cmdSetStencilCompareMask'.
+                          ("faceMask" ::: StencilFaceFlags)
+                       -> -- | @reference@ is the new value to use as the stencil reference value.
+                          ("reference" ::: Word32)
+                       -> io ()
+cmdSetStencilReference commandBuffer faceMask reference = liftIO $ do
+  let vkCmdSetStencilReferencePtr = pVkCmdSetStencilReference (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetStencilReferencePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilReference is null" Nothing Nothing
+  let vkCmdSetStencilReference' = mkVkCmdSetStencilReference vkCmdSetStencilReferencePtr
+  traceAroundEvent "vkCmdSetStencilReference" (vkCmdSetStencilReference' (commandBufferHandle (commandBuffer)) (faceMask) (reference))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindDescriptorSets
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineBindPoint -> PipelineLayout -> Word32 -> Word32 -> Ptr DescriptorSet -> Word32 -> Ptr Word32 -> IO ()
+
+-- | vkCmdBindDescriptorSets - Binds descriptor sets to a command buffer
+--
+-- = Description
+--
+-- 'cmdBindDescriptorSets' causes the sets numbered [@firstSet@..
+-- @firstSet@+@descriptorSetCount@-1] to use the bindings stored in
+-- @pDescriptorSets@[0..descriptorSetCount-1] for subsequent
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>
+-- set by @pipelineBindPoint@. Any bindings that were previously applied
+-- via these sets 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
+-- either a different set is bound to the same set number, or the set is
+-- disturbed as described in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
+--
+-- A compatible descriptor set /must/ be bound for all set numbers that any
+-- shaders in a pipeline access, at the time that a drawing or dispatching
+-- command is recorded to execute using that pipeline. However, if none of
+-- the shaders in a pipeline statically use any bindings with a particular
+-- set number, then no descriptor set need be bound for that set number,
+-- even if the pipeline layout includes a non-trivial descriptor set layout
+-- for that set number.
+--
+-- If any of the sets being bound include dynamic uniform or storage
+-- buffers, then @pDynamicOffsets@ includes one element for each array
+-- element in each dynamic descriptor type binding in each set. Values are
+-- taken from @pDynamicOffsets@ in an order such that all entries for set N
+-- come before set N+1; within a set, entries are ordered by the binding
+-- numbers in the descriptor set layouts; and within a binding array,
+-- elements are in order. @dynamicOffsetCount@ /must/ equal the total
+-- number of dynamic descriptors in the sets being bound.
+--
+-- The effective offset used for dynamic uniform and storage buffer
+-- bindings is the sum of the relative offset taken from @pDynamicOffsets@,
+-- and the base address of the buffer plus base offset in the descriptor
+-- set. The range of the dynamic uniform and storage buffer bindings is the
+-- buffer range as specified in the descriptor set.
+--
+-- Each of the @pDescriptorSets@ /must/ be compatible with the pipeline
+-- layout specified by @layout@. The layout used to program the bindings
+-- /must/ also be compatible with the pipeline used in subsequent
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>
+-- with that pipeline type, as defined in the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>
+-- section.
+--
+-- The descriptor set contents bound by a call to 'cmdBindDescriptorSets'
+-- /may/ be consumed at the following times:
+--
+-- -   For descriptor bindings created with the
+--     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
+--     bit set, the contents /may/ be consumed when the command buffer is
+--     submitted to a queue, or during shader execution of the resulting
+--     draws and dispatches, or any time in between. Otherwise,
+--
+-- -   during host execution of the command, or during shader execution of
+--     the resulting draws and dispatches, or any time in between.
+--
+-- Thus, the contents of a descriptor set binding /must/ not be altered
+-- (overwritten by an update command, or freed) between the first point in
+-- time that it /may/ be consumed, and when the command completes executing
+-- on the queue.
+--
+-- The contents of @pDynamicOffsets@ are consumed immediately during
+-- execution of 'cmdBindDescriptorSets'. Once all pending uses have
+-- completed, it is legal to update and reuse a descriptor set.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358# Each element of
+--     @pDescriptorSets@ /must/ have been allocated with a
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' that matches (is the
+--     same as, or identically defined as) the
+--     'Vulkan.Core10.Handles.DescriptorSetLayout' at set /n/ in @layout@,
+--     where /n/ is the sum of @firstSet@ and the index into
+--     @pDescriptorSets@
+--
+-- -   #VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359#
+--     @dynamicOffsetCount@ /must/ be equal to the total number of dynamic
+--     descriptors in @pDescriptorSets@
+--
+-- -   #VUID-vkCmdBindDescriptorSets-firstSet-00360# The sum of @firstSet@
+--     and @descriptorSetCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.PipelineLayout.PipelineLayoutCreateInfo'::@setLayoutCount@
+--     provided when @layout@ was created
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361#
+--     @pipelineBindPoint@ /must/ be supported by the @commandBuffer@’s
+--     parent 'Vulkan.Core10.Handles.CommandPool'’s queue family
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971# Each element of
+--     @pDynamicOffsets@ which corresponds to a descriptor binding with
+--     type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC'
+--     /must/ be a multiple of
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minUniformBufferOffsetAlignment@
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972# Each element of
+--     @pDynamicOffsets@ which corresponds to a descriptor binding with
+--     type
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC'
+--     /must/ be a multiple of
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minStorageBufferOffsetAlignment@
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979# For each
+--     dynamic uniform or storage buffer binding in @pDescriptorSets@, the
+--     sum of the effective offset, as defined above, and the range of the
+--     binding /must/ be less than or equal to the size of the buffer
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616# Each element of
+--     @pDescriptorSets@ /must/ not have been allocated from a
+--     'Vulkan.Core10.Handles.DescriptorPool' with the
+--     'Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits.DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE'
+--     flag set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindDescriptorSets-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter#
+--     @pipelineBindPoint@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' value
+--
+-- -   #VUID-vkCmdBindDescriptorSets-layout-parameter# @layout@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter#
+--     @pDescriptorSets@ /must/ be a valid pointer to an array of
+--     @descriptorSetCount@ valid 'Vulkan.Core10.Handles.DescriptorSet'
+--     handles
+--
+-- -   #VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter# If
+--     @dynamicOffsetCount@ is not @0@, @pDynamicOffsets@ /must/ be a valid
+--     pointer to an array of @dynamicOffsetCount@ @uint32_t@ values
+--
+-- -   #VUID-vkCmdBindDescriptorSets-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-vkCmdBindDescriptorSets-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength#
+--     @descriptorSetCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdBindDescriptorSets-commonparent# Each of @commandBuffer@,
+--     @layout@, and the elements of @pDescriptorSets@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.DescriptorSet',
+-- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint',
+-- 'Vulkan.Core10.Handles.PipelineLayout'
+cmdBindDescriptorSets :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer that the descriptor sets will be
+                         -- bound to.
+                         CommandBuffer
+                      -> -- | @pipelineBindPoint@ is a
+                         -- 'Vulkan.Core10.Enums.PipelineBindPoint.PipelineBindPoint' indicating the
+                         -- type of the pipeline that will use the descriptors. There is a separate
+                         -- set of bind points for each pipeline type, so binding one does not
+                         -- disturb the others.
+                         PipelineBindPoint
+                      -> -- | @layout@ is a 'Vulkan.Core10.Handles.PipelineLayout' object used to
+                         -- program the bindings.
+                         PipelineLayout
+                      -> -- | @firstSet@ is the set number of the first descriptor set to be bound.
+                         ("firstSet" ::: Word32)
+                      -> -- | @pDescriptorSets@ is a pointer to an array of handles to
+                         -- 'Vulkan.Core10.Handles.DescriptorSet' objects describing the descriptor
+                         -- sets to bind to.
+                         ("descriptorSets" ::: Vector DescriptorSet)
+                      -> -- | @pDynamicOffsets@ is a pointer to an array of @uint32_t@ values
+                         -- specifying dynamic offsets.
+                         ("dynamicOffsets" ::: Vector Word32)
+                      -> io ()
+cmdBindDescriptorSets commandBuffer pipelineBindPoint layout firstSet descriptorSets dynamicOffsets = liftIO . evalContT $ do
+  let vkCmdBindDescriptorSetsPtr = pVkCmdBindDescriptorSets (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindDescriptorSetsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindDescriptorSets is null" Nothing Nothing
+  let vkCmdBindDescriptorSets' = mkVkCmdBindDescriptorSets vkCmdBindDescriptorSetsPtr
+  pPDescriptorSets <- ContT $ allocaBytes @DescriptorSet ((Data.Vector.length (descriptorSets)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDescriptorSets `plusPtr` (8 * (i)) :: Ptr DescriptorSet) (e)) (descriptorSets)
+  pPDynamicOffsets <- ContT $ allocaBytes @Word32 ((Data.Vector.length (dynamicOffsets)) * 4)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPDynamicOffsets `plusPtr` (4 * (i)) :: Ptr Word32) (e)) (dynamicOffsets)
+  lift $ traceAroundEvent "vkCmdBindDescriptorSets" (vkCmdBindDescriptorSets' (commandBufferHandle (commandBuffer)) (pipelineBindPoint) (layout) (firstSet) ((fromIntegral (Data.Vector.length $ (descriptorSets)) :: Word32)) (pPDescriptorSets) ((fromIntegral (Data.Vector.length $ (dynamicOffsets)) :: Word32)) (pPDynamicOffsets))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindIndexBuffer
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IndexType -> IO ()
+
+-- | vkCmdBindIndexBuffer - Bind an index buffer to a command buffer
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindIndexBuffer-offset-00431# @offset@ /must/ be less
+--     than the size of @buffer@
+--
+-- -   #VUID-vkCmdBindIndexBuffer-offset-00432# The sum of @offset@ and the
+--     address of the range of 'Vulkan.Core10.Handles.DeviceMemory' object
+--     that is backing @buffer@, /must/ be a multiple of the type indicated
+--     by @indexType@
+--
+-- -   #VUID-vkCmdBindIndexBuffer-buffer-00433# @buffer@ /must/ have been
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDEX_BUFFER_BIT'
+--     flag
+--
+-- -   #VUID-vkCmdBindIndexBuffer-buffer-00434# If @buffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdBindIndexBuffer-indexType-02507# @indexType@ /must/ not
+--     be 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_NONE_KHR'
+--
+-- -   #VUID-vkCmdBindIndexBuffer-indexType-02765# If @indexType@ is
+--     'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-indexTypeUint8 indexTypeUint8>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindIndexBuffer-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindIndexBuffer-buffer-parameter# @buffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdBindIndexBuffer-indexType-parameter# @indexType@ /must/
+--     be a valid 'Vulkan.Core10.Enums.IndexType.IndexType' value
+--
+-- -   #VUID-vkCmdBindIndexBuffer-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-vkCmdBindIndexBuffer-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBindIndexBuffer-commonparent# Both of @buffer@, and
+--     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.IndexType.IndexType'
+cmdBindIndexBuffer :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command is
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @buffer@ is the buffer being bound.
+                      Buffer
+                   -> -- | @offset@ is the starting offset in bytes within @buffer@ used in index
+                      -- buffer address calculations.
+                      ("offset" ::: DeviceSize)
+                   -> -- | @indexType@ is a 'Vulkan.Core10.Enums.IndexType.IndexType' value
+                      -- specifying the size of the indices.
+                      IndexType
+                   -> io ()
+cmdBindIndexBuffer commandBuffer buffer offset indexType = liftIO $ do
+  let vkCmdBindIndexBufferPtr = pVkCmdBindIndexBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBindIndexBufferPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindIndexBuffer is null" Nothing Nothing
+  let vkCmdBindIndexBuffer' = mkVkCmdBindIndexBuffer vkCmdBindIndexBufferPtr
+  traceAroundEvent "vkCmdBindIndexBuffer" (vkCmdBindIndexBuffer' (commandBufferHandle (commandBuffer)) (buffer) (offset) (indexType))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindVertexBuffers
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> IO ()
+
+-- | vkCmdBindVertexBuffers - Bind vertex buffers to a command buffer
+--
+-- = Description
+--
+-- The values taken from elements i of @pBuffers@ and @pOffsets@ replace
+-- the current state for the vertex input binding @firstBinding@ + i, for i
+-- in [0, @bindingCount@). The vertex input binding is updated to start at
+-- the offset indicated by @pOffsets@[i] from the start of the buffer
+-- @pBuffers@[i]. All vertex input attributes that use each of these
+-- bindings will use these updated addresses in their address calculations
+-- for subsequent drawing commands. If the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- feature is enabled, elements of @pBuffers@ /can/ be
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by the
+-- vertex shader. If a vertex input attribute is bound to a vertex input
+-- binding that is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the values
+-- taken from memory are considered to be zero, and missing G, B, or A
+-- components are
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindVertexBuffers-firstBinding-00624# @firstBinding@
+--     /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-vkCmdBindVertexBuffers-firstBinding-00625# The sum of
+--     @firstBinding@ and @bindingCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-vkCmdBindVertexBuffers-pOffsets-00626# All elements of
+--     @pOffsets@ /must/ be less than the size of the corresponding element
+--     in @pBuffers@
+--
+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-00627# All elements of
+--     @pBuffers@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
+--     flag
+--
+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-00628# Each element of
+--     @pBuffers@ that is non-sparse /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-04001# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, all elements of @pBuffers@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-04002# If an element of
+--     @pBuffers@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of @pOffsets@ /must/ be zero
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindVertexBuffers-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindVertexBuffers-pBuffers-parameter# @pBuffers@ /must/
+--     be a valid pointer to an array of @bindingCount@ valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Core10.Handles.Buffer' handles
+--
+-- -   #VUID-vkCmdBindVertexBuffers-pOffsets-parameter# @pOffsets@ /must/
+--     be a valid pointer to an array of @bindingCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdBindVertexBuffers-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-vkCmdBindVertexBuffers-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBindVertexBuffers-bindingCount-arraylength#
+--     @bindingCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdBindVertexBuffers-commonparent# Both of @commandBuffer@,
+--     and the elements of @pBuffers@ that are valid handles of non-ignored
+--     parameters /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdBindVertexBuffers :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command is
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @firstBinding@ is the index of the first vertex input binding whose
+                        -- state is updated by the command.
+                        ("firstBinding" ::: Word32)
+                     -> -- | @pBuffers@ is a pointer to an array of buffer handles.
+                        ("buffers" ::: Vector Buffer)
+                     -> -- | @pOffsets@ is a pointer to an array of buffer offsets.
+                        ("offsets" ::: Vector DeviceSize)
+                     -> io ()
+cmdBindVertexBuffers commandBuffer firstBinding buffers offsets = liftIO . evalContT $ do
+  let vkCmdBindVertexBuffersPtr = pVkCmdBindVertexBuffers (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindVertexBuffersPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindVertexBuffers is null" Nothing Nothing
+  let vkCmdBindVertexBuffers' = mkVkCmdBindVertexBuffers vkCmdBindVertexBuffersPtr
+  let pBuffersLength = Data.Vector.length $ (buffers)
+  lift $ unless ((Data.Vector.length $ (offsets)) == pBuffersLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing
+  pPBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (buffers)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)
+  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 "vkCmdBindVertexBuffers" (vkCmdBindVertexBuffers' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDraw
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDraw - Draw primitives
+--
+-- = Description
+--
+-- When the command is executed, primitives are assembled using the current
+-- primitive topology and @vertexCount@ consecutive vertex indices with the
+-- first @vertexIndex@ value equal to @firstVertex@. The primitives are
+-- drawn @instanceCount@ times with @instanceIndex@ starting with
+-- @firstInstance@ and increasing sequentially for each instance. The
+-- assembled primitives execute the bound graphics pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDraw-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDraw-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDraw-None-06479# If a 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
+--     the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
+--
+-- -   #VUID-vkCmdDraw-None-02691# If a 'Vulkan.Core10.Handles.ImageView'
+--     is accessed using atomic operations as a result of this command,
+--     then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDraw-None-02692# If a 'Vulkan.Core10.Handles.ImageView'
+--     is sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDraw-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering, as specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDraw-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
+--     reduction mode of either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     as a result of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering together with minmax filtering, as
+--     specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDraw-flags-02696# Any 'Vulkan.Core10.Handles.Image'
+--     created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
+--     containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
+--     sampled as a result of this command /must/ only be sampled using a
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDraw-OpTypeImage-06423# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image
+--     or storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDraw-OpTypeImage-06424# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
+--     storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDraw-None-02697# For each set /n/ that is statically used
+--     by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command, a descriptor set /must/ have been bound
+--     to /n/ at the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
+--     feature is not enabled, then for each push constant that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a push constant value
+--     /must/ have been set for the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
+--     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 if they
+--     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDraw-None-02700# A valid pipeline /must/ be bound to the
+--     pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDraw-commandBuffer-02701# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command requires any dynamic state, that state
+--     /must/ have been set or inherited (if the
+--     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
+--     @commandBuffer@, and done so after any previously bound pipeline
+--     with the corresponding state not specified as dynamic
+--
+-- -   #VUID-vkCmdDraw-None-02859# There /must/ not have been any calls to
+--     dynamic state setting commands for any state not specified as
+--     dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command, since that pipeline was
+--     bound
+--
+-- -   #VUID-vkCmdDraw-None-02702# If the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a 'Vulkan.Core10.Handles.Sampler' object that uses
+--     unnormalized coordinates, that sampler /must/ not be used to sample
+--     from any 'Vulkan.Core10.Handles.Image' with a
+--     'Vulkan.Core10.Handles.ImageView' of the type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
+--     any shader stage
+--
+-- -   #VUID-vkCmdDraw-None-02703# If the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a 'Vulkan.Core10.Handles.Sampler' object that uses
+--     unnormalized coordinates, that sampler /must/ not be used with any
+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@
+--     instructions with @ImplicitLod@, @Dref@ or @Proj@ in their name, in
+--     any shader stage
+--
+-- -   #VUID-vkCmdDraw-None-02704# If the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a 'Vulkan.Core10.Handles.Sampler' object that uses
+--     unnormalized coordinates, that sampler /must/ not be used with any
+--     of the SPIR-V @OpImageSample*@ or @OpImageSparseSample*@
+--     instructions that includes a LOD bias or any offset values, in any
+--     shader stage
+--
+-- -   #VUID-vkCmdDraw-None-02705# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a uniform buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDraw-None-02706# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a storage buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDraw-commandBuffer-02707# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource accessed by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDraw-None-04115# If a 'Vulkan.Core10.Handles.ImageView'
+--     is accessed using @OpImageWrite@ as a result of this command, then
+--     the @Type@ of the @Texel@ operand of that instruction /must/ have at
+--     least as many components as the image view’s format
+--
+-- -   #VUID-vkCmdDraw-OpImageWrite-04469# If a
+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     buffer view’s format
+--
+-- -   #VUID-vkCmdDraw-SampledType-04470# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDraw-SampledType-04471# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDraw-SampledType-04472# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDraw-SampledType-04473# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDraw-sparseImageInt64Atomics-04474# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDraw-sparseImageInt64Atomics-04475# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
+--     created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDraw-renderPass-02684# The current render pass /must/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
+--     with the @renderPass@ member of the
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDraw-subpass-02685# The subpass index of the current
+--     render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDraw-None-02686# Every input attachment used by the
+--     current subpass /must/ be bound to the pipeline via a descriptor set
+--
+-- -   #VUID-vkCmdDraw-None-04584# Image subresources used as attachments
+--     in the current render pass /must/ not be accessed in any way other
+--     than as an attachment by this command, except for cases involving
+--     read-only access to depth\/stencil attachments as described in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
+--     chapter
+--
+-- -   #VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688# If the draw is
+--     recorded in a render pass instance with multiview enabled, the
+--     maximum instance index /must/ be less than or equal to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
+--
+-- -   #VUID-vkCmdDraw-sampleLocationsEnable-02689# If the bound graphics
+--     pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDraw-viewportCount-03417# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDraw-scissorCount-03418# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDraw-viewportCount-03419# If the bound graphics pipeline
+--     state was created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic states enabled then both
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--
+-- -   #VUID-vkCmdDraw-viewportCount-04137# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDraw-viewportCount-04138# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDraw-viewportCount-04139# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDraw-viewportCount-04140# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDraw-None-04876# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDraw-None-04877# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDraw-logicOp-04878# If the bound graphics pipeline state
+--     was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, the bound graphics pipeline was created with
+--     the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and any of the shader stages of the bound
+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdDraw-blendEnable-04727# If rasterization is not disabled
+--     in the bound graphics pipeline, then for each color attachment in
+--     the subpass, if the corresponding image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     do not contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
+--     then the @blendEnable@ member of the corresponding element of the
+--     @pAttachments@ member of @pColorBlendState@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDraw-rasterizationSamples-04740# If rasterization is not
+--     disabled in the bound graphics pipeline, and neither the
+--     @VK_AMD_mixed_attachment_samples@ nor the
+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDraw-imageView-06172# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDraw-imageView-06173# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDraw-imageView-06174# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDraw-imageView-06175# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDraw-imageView-06176# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDraw-imageView-06177# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDraw-viewMask-06178# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
+--
+-- -   #VUID-vkCmdDraw-colorAttachmentCount-06179# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDraw-colorAttachmentCount-06180# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDraw-pDepthAttachment-06181# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDraw-pStencilAttachment-06182# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDraw-imageView-06183# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDraw-imageView-06184# If the current render pass instance
+--     was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDraw-colorAttachmentCount-06185# If the currently bound
+--     pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the corresponding element of the
+--     @pColorAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDraw-pDepthAttachment-06186# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDraw-pStencilAttachment-06187# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDraw-colorAttachmentCount-06188# If the currently bound
+--     pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDraw-pDepthAttachment-06189# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDraw-pStencilAttachment-06190# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDraw-renderPass-06198# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDraw-commandBuffer-02712# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource written to by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be an unprotected resource
+--
+-- -   #VUID-vkCmdDraw-commandBuffer-02713# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, pipeline stages other than the framebuffer-space
+--     and compute stages in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command /must/ not
+--     write to any resource
+--
+-- -   #VUID-vkCmdDraw-commandBuffer-04617# If any of the shader stages of
+--     the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command uses the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+--     capability, then @commandBuffer@ /must/ not be a protected command
+--     buffer
+--
+-- -   #VUID-vkCmdDraw-None-04007# All vertex input bindings accessed via
+--     vertex input variables declared in the vertex shader entry point’s
+--     interface /must/ have either valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
+--
+-- -   #VUID-vkCmdDraw-None-04008# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, all vertex input bindings accessed via
+--     vertex input variables declared in the vertex shader entry point’s
+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDraw-None-02721# For a given vertex buffer binding, any
+--     attribute data fetched /must/ be entirely contained within the
+--     corresponding vertex buffer binding, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
+--
+-- -   #VUID-vkCmdDraw-primitiveTopology-03420# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @primitiveTopology@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDraw-None-04912# If the bound graphics pipeline was
+--     created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic states enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDraw-pStrides-04913# If the bound graphics pipeline was
+--     created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
+-- -   #VUID-vkCmdDraw-None-04914# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDraw-None-04875# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDraw-None-04879# If the bound graphics pipeline state was
+--     created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDraw-stage-06481# The bound graphics pipeline /must/ not
+--     have been created with the
+--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
+--     to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDraw-commandBuffer-parameter# @commandBuffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDraw-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-vkCmdDraw-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdDraw-renderpass# This command /must/ only be called
+--     inside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdDraw :: forall io
+         . (MonadIO io)
+        => -- | @commandBuffer@ is the command buffer into which the command is
+           -- recorded.
+           CommandBuffer
+        -> -- | @vertexCount@ is the number of vertices to draw.
+           ("vertexCount" ::: Word32)
+        -> -- | @instanceCount@ is the number of instances to draw.
+           ("instanceCount" ::: Word32)
+        -> -- | @firstVertex@ is the index of the first vertex to draw.
+           ("firstVertex" ::: Word32)
+        -> -- | @firstInstance@ is the instance ID of the first instance to draw.
+           ("firstInstance" ::: Word32)
+        -> io ()
+cmdDraw commandBuffer vertexCount instanceCount firstVertex firstInstance = liftIO $ do
+  let vkCmdDrawPtr = pVkCmdDraw (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDraw is null" Nothing Nothing
+  let vkCmdDraw' = mkVkCmdDraw vkCmdDrawPtr
+  traceAroundEvent "vkCmdDraw" (vkCmdDraw' (commandBufferHandle (commandBuffer)) (vertexCount) (instanceCount) (firstVertex) (firstInstance))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndexed
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> Int32 -> Word32 -> IO ()
+
+-- | vkCmdDrawIndexed - Draw primitives with indexed vertices
+--
+-- = Description
+--
+-- When the command is executed, primitives are assembled using the current
+-- primitive topology and @indexCount@ vertices whose indices are retrieved
+-- from the index buffer. The index buffer is treated as an array of
+-- tightly packed unsigned integers of size defined by the
+-- 'cmdBindIndexBuffer'::@indexType@ parameter with which the buffer was
+-- bound.
+--
+-- The first vertex index is at an offset of @firstIndex@ × @indexSize@ +
+-- @offset@ within the bound index buffer, where @offset@ is the offset
+-- specified by 'cmdBindIndexBuffer' and @indexSize@ is the byte size of
+-- the type specified by @indexType@. Subsequent index values are retrieved
+-- from consecutive locations in the index buffer. Indices are first
+-- compared to the primitive restart value, then zero extended to 32 bits
+-- (if the @indexType@ is
+-- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT8_EXT' or
+-- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16') and have
+-- @vertexOffset@ added to them, before being supplied as the @vertexIndex@
+-- value.
+--
+-- The primitives are drawn @instanceCount@ times with @instanceIndex@
+-- starting with @firstInstance@ and increasing sequentially for each
+-- instance. The assembled primitives execute the bound graphics pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawIndexed-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexed-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-06479# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
+--     the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02691# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
+--     operations as a result of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexed-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering, as specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDrawIndexed-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
+--     reduction mode of either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     as a result of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering together with minmax filtering, as
+--     specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDrawIndexed-flags-02696# Any
+--     'Vulkan.Core10.Handles.Image' created with a
+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
+--     sampled as a result of this command /must/ only be sampled using a
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndexed-OpTypeImage-06423# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image
+--     or storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexed-OpTypeImage-06424# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
+--     storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02697# For each set /n/ that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a descriptor set /must/
+--     have been bound to /n/ at the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
+--     feature is not enabled, then for each push constant that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a push constant value
+--     /must/ have been set for the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
+--     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
+--     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
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02700# A valid pipeline /must/ be bound
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-02701# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command requires any dynamic state, that state
+--     /must/ have been set or inherited (if the
+--     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
+--     @commandBuffer@, and done so after any previously bound pipeline
+--     with the corresponding state not specified as dynamic
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02859# There /must/ not have been any
+--     calls to dynamic state setting commands for any state not specified
+--     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command, since that pipeline
+--     was bound
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02702# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used to sample from any
+--     'Vulkan.Core10.Handles.Image' with a
+--     'Vulkan.Core10.Handles.ImageView' of the type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
+--     any shader stage
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02703# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02704# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values, in any shader stage
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02705# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a uniform buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02706# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a storage buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-02707# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource accessed by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04115# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     image view’s format
+--
+-- -   #VUID-vkCmdDrawIndexed-OpImageWrite-04469# If a
+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     buffer view’s format
+--
+-- -   #VUID-vkCmdDrawIndexed-SampledType-04470# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDrawIndexed-SampledType-04471# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDrawIndexed-SampledType-04472# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDrawIndexed-SampledType-04473# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
+--     created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexed-renderPass-02684# The current render pass
+--     /must/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
+--     with the @renderPass@ member of the
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndexed-subpass-02685# The subpass index of the
+--     current render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02686# Every input attachment used by
+--     the current subpass /must/ be bound to the pipeline via a descriptor
+--     set
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04584# Image subresources used as
+--     attachments in the current render pass /must/ not be accessed in any
+--     way other than as an attachment by this command, except for cases
+--     involving read-only access to depth\/stencil attachments as
+--     described in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
+--     chapter
+--
+-- -   #VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688# If the draw
+--     is recorded in a render pass instance with multiview enabled, the
+--     maximum instance index /must/ be less than or equal to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
+--
+-- -   #VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndexed-viewportCount-03417# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDrawIndexed-scissorCount-03418# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDrawIndexed-viewportCount-03419# If the bound graphics
+--     pipeline state was created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic states enabled then both
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04137# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04138# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04139# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexed-viewportCount-04140# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04876# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04877# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexed-logicOp-04878# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, the bound graphics pipeline was created with
+--     the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and any of the shader stages of the bound
+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdDrawIndexed-blendEnable-04727# If rasterization is not
+--     disabled in the bound graphics pipeline, then for each color
+--     attachment in the subpass, if the corresponding image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     do not contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
+--     then the @blendEnable@ member of the corresponding element of the
+--     @pAttachments@ member of @pColorBlendState@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexed-rasterizationSamples-04740# If rasterization
+--     is not disabled in the bound graphics pipeline, and neither the
+--     @VK_AMD_mixed_attachment_samples@ nor the
+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06172# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06173# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06174# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06175# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06176# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06177# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndexed-viewMask-06178# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
+--
+-- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06179# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06180# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06181# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06182# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06183# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndexed-imageView-06184# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06185# If the currently
+--     bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the corresponding element of the
+--     @pColorAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06186# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06187# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexed-colorAttachmentCount-06188# If the currently
+--     bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexed-pDepthAttachment-06189# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexed-pStencilAttachment-06190# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexed-renderPass-06198# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-02712# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource written to by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be an unprotected resource
+--
+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-02713# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, pipeline stages other than the framebuffer-space
+--     and compute stages in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command /must/ not
+--     write to any resource
+--
+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-04617# If any of the shader
+--     stages of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point used by this command uses the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+--     capability, then @commandBuffer@ /must/ not be a protected command
+--     buffer
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04007# All vertex input bindings
+--     accessed via vertex input variables declared in the vertex shader
+--     entry point’s interface /must/ have either valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04008# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, all vertex input bindings accessed via
+--     vertex input variables declared in the vertex shader entry point’s
+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndexed-None-02721# For a given vertex buffer
+--     binding, any attribute data fetched /must/ be entirely contained
+--     within the corresponding vertex buffer binding, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
+--
+-- -   #VUID-vkCmdDrawIndexed-primitiveTopology-03420# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @primitiveTopology@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04912# If the bound graphics pipeline
+--     was created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic states enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDrawIndexed-pStrides-04913# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04914# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04875# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexed-None-04879# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexed-stage-06481# The bound graphics pipeline
+--     /must/ not have been created with the
+--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
+--     to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
+--
+-- -   #VUID-vkCmdDrawIndexed-firstIndex-04932# (@indexSize@ ×
+--     (@firstIndex@ + @indexCount@) + @offset@) /must/ be less than or
+--     equal to the size of the bound index buffer, with @indexSize@ being
+--     based on the type specified by @indexType@, where the index buffer,
+--     @indexType@, and @offset@ are specified via 'cmdBindIndexBuffer'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawIndexed-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawIndexed-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-vkCmdDrawIndexed-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdDrawIndexed-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdDrawIndexed :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer into which the command is
+                  -- recorded.
+                  CommandBuffer
+               -> -- | @indexCount@ is the number of vertices to draw.
+                  ("indexCount" ::: Word32)
+               -> -- | @instanceCount@ is the number of instances to draw.
+                  ("instanceCount" ::: Word32)
+               -> -- | @firstIndex@ is the base index within the index buffer.
+                  ("firstIndex" ::: Word32)
+               -> -- | @vertexOffset@ is the value added to the vertex index before indexing
+                  -- into the vertex buffer.
+                  ("vertexOffset" ::: Int32)
+               -> -- | @firstInstance@ is the instance ID of the first instance to draw.
+                  ("firstInstance" ::: Word32)
+               -> io ()
+cmdDrawIndexed commandBuffer indexCount instanceCount firstIndex vertexOffset firstInstance = liftIO $ do
+  let vkCmdDrawIndexedPtr = pVkCmdDrawIndexed (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawIndexedPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexed is null" Nothing Nothing
+  let vkCmdDrawIndexed' = mkVkCmdDrawIndexed vkCmdDrawIndexedPtr
+  traceAroundEvent "vkCmdDrawIndexed" (vkCmdDrawIndexed' (commandBufferHandle (commandBuffer)) (indexCount) (instanceCount) (firstIndex) (vertexOffset) (firstInstance))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndirect
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawIndirect - Draw primitives with indirect parameters
+--
+-- = Description
+--
+-- 'cmdDrawIndirect' behaves similarly to 'cmdDraw' except that the
+-- parameters are read by the device from a buffer during execution.
+-- @drawCount@ draws are executed by the command, with parameters taken
+-- from @buffer@ starting at @offset@ and increasing by @stride@ bytes for
+-- each successive draw. The parameters of each draw are encoded in an
+-- array of 'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures. If
+-- @drawCount@ is less than or equal to one, @stride@ is ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawIndirect-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirect-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-06479# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
+--     the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02691# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
+--     operations as a result of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirect-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering, as specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDrawIndirect-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
+--     reduction mode of either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     as a result of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering together with minmax filtering, as
+--     specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDrawIndirect-flags-02696# Any
+--     'Vulkan.Core10.Handles.Image' created with a
+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
+--     sampled as a result of this command /must/ only be sampled using a
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndirect-OpTypeImage-06423# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image
+--     or storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirect-OpTypeImage-06424# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
+--     storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02697# For each set /n/ that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a descriptor set /must/
+--     have been bound to /n/ at the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
+--     feature is not enabled, then for each push constant that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a push constant value
+--     /must/ have been set for the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
+--     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
+--     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
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02700# A valid pipeline /must/ be bound
+--     to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndirect-commandBuffer-02701# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command requires any dynamic state, that state
+--     /must/ have been set or inherited (if the
+--     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
+--     @commandBuffer@, and done so after any previously bound pipeline
+--     with the corresponding state not specified as dynamic
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02859# There /must/ not have been any
+--     calls to dynamic state setting commands for any state not specified
+--     as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to
+--     the pipeline bind point used by this command, since that pipeline
+--     was bound
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02702# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used to sample from any
+--     'Vulkan.Core10.Handles.Image' with a
+--     'Vulkan.Core10.Handles.ImageView' of the type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
+--     any shader stage
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02703# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02704# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values, in any shader stage
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02705# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a uniform buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02706# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a storage buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDrawIndirect-commandBuffer-02707# If @commandBuffer@ is
+--     an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource accessed by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04115# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     image view’s format
+--
+-- -   #VUID-vkCmdDrawIndirect-OpImageWrite-04469# If a
+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     buffer view’s format
+--
+-- -   #VUID-vkCmdDrawIndirect-SampledType-04470# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDrawIndirect-SampledType-04471# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDrawIndirect-SampledType-04472# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDrawIndirect-SampledType-04473# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
+--     created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndirect-renderPass-02684# The current render pass
+--     /must/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
+--     with the @renderPass@ member of the
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndirect-subpass-02685# The subpass index of the
+--     current render pass /must/ be equal to the @subpass@ member of the
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02686# Every input attachment used by
+--     the current subpass /must/ be bound to the pipeline via a descriptor
+--     set
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04584# Image subresources used as
+--     attachments in the current render pass /must/ not be accessed in any
+--     way other than as an attachment by this command, except for cases
+--     involving read-only access to depth\/stencil attachments as
+--     described in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
+--     chapter
+--
+-- -   #VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688# If the draw
+--     is recorded in a render pass instance with multiview enabled, the
+--     maximum instance index /must/ be less than or equal to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
+--
+-- -   #VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689# If the bound
+--     graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndirect-viewportCount-03417# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDrawIndirect-scissorCount-03418# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDrawIndirect-viewportCount-03419# If the bound graphics
+--     pipeline state was created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic states enabled then both
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--
+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04137# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04138# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04139# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndirect-viewportCount-04140# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142# If the
+--     bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04876# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04877# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirect-logicOp-04878# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, the bound graphics pipeline was created with
+--     the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and any of the shader stages of the bound
+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdDrawIndirect-blendEnable-04727# If rasterization is not
+--     disabled in the bound graphics pipeline, then for each color
+--     attachment in the subpass, if the corresponding image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     do not contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
+--     then the @blendEnable@ member of the corresponding element of the
+--     @pAttachments@ member of @pColorBlendState@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndirect-rasterizationSamples-04740# If rasterization
+--     is not disabled in the bound graphics pipeline, and neither the
+--     @VK_AMD_mixed_attachment_samples@ nor the
+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06172# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06173# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06174# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06175# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06176# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06177# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndirect-viewMask-06178# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
+--
+-- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06179# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06180# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06181# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06182# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06183# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndirect-imageView-06184# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06185# If the currently
+--     bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the corresponding element of the
+--     @pColorAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06186# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06187# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndirect-colorAttachmentCount-06188# If the currently
+--     bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndirect-pDepthAttachment-06189# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndirect-pStencilAttachment-06190# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndirect-renderPass-06198# If the current render pass
+--     instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04007# All vertex input bindings
+--     accessed via vertex input variables declared in the vertex shader
+--     entry point’s interface /must/ have either valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04008# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, all vertex input bindings accessed via
+--     vertex input variables declared in the vertex shader entry point’s
+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndirect-None-02721# For a given vertex buffer
+--     binding, any attribute data fetched /must/ be entirely contained
+--     within the corresponding vertex buffer binding, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
+--
+-- -   #VUID-vkCmdDrawIndirect-primitiveTopology-03420# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @primitiveTopology@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04912# If the bound graphics pipeline
+--     was created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic states enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDrawIndirect-pStrides-04913# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04914# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04875# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirect-None-04879# If the bound graphics pipeline
+--     state was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndirect-stage-06481# The bound graphics pipeline
+--     /must/ not have been created with the
+--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
+--     to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
+--
+-- -   #VUID-vkCmdDrawIndirect-buffer-02708# If @buffer@ is non-sparse then
+--     it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawIndirect-buffer-02709# @buffer@ /must/ have been
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndirect-offset-02710# @offset@ /must/ be a multiple
+--     of @4@
+--
+-- -   #VUID-vkCmdDrawIndirect-commandBuffer-02711# @commandBuffer@ /must/
+--     not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawIndirect-drawCount-02718# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>
+--     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
+--
+-- -   #VUID-vkCmdDrawIndirect-drawCount-02719# @drawCount@ /must/ be less
+--     than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawIndirect-firstInstance-00478# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
+--     feature is not enabled, all the @firstInstance@ members of the
+--     'Vulkan.Core10.OtherTypes.DrawIndirectCommand' structures accessed
+--     by this command /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawIndirect-drawCount-00476# If @drawCount@ is greater
+--     than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be greater
+--     than or equal to
+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')
+--
+-- -   #VUID-vkCmdDrawIndirect-drawCount-00487# If @drawCount@ is equal to
+--     @1@, (@offset@ +
+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be
+--     less than or equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawIndirect-drawCount-00488# If @drawCount@ is greater
+--     than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndirectCommand')) /must/ be
+--     less than or equal to the size of @buffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawIndirect-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawIndirect-buffer-parameter# @buffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawIndirect-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-vkCmdDrawIndirect-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdDrawIndirect-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawIndirect-commonparent# Both of @buffer@, and
+--     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawIndirect :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command is
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @buffer@ is the buffer containing draw parameters.
+                   Buffer
+                -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.
+                   ("offset" ::: DeviceSize)
+                -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.
+                   ("drawCount" ::: Word32)
+                -> -- | @stride@ is the byte stride between successive sets of draw parameters.
+                   ("stride" ::: Word32)
+                -> io ()
+cmdDrawIndirect commandBuffer buffer offset drawCount stride = liftIO $ do
+  let vkCmdDrawIndirectPtr = pVkCmdDrawIndirect (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawIndirectPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndirect is null" Nothing Nothing
+  let vkCmdDrawIndirect' = mkVkCmdDrawIndirect vkCmdDrawIndirectPtr
+  traceAroundEvent "vkCmdDrawIndirect" (vkCmdDrawIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDrawIndexedIndirect
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDrawIndexedIndirect - Draw primitives with indirect parameters and
+-- indexed vertices
+--
+-- = Description
+--
+-- 'cmdDrawIndexedIndirect' behaves similarly to 'cmdDrawIndexed' except
+-- that the parameters are read by the device from a buffer during
+-- execution. @drawCount@ draws are executed by the command, with
+-- parameters taken from @buffer@ starting at @offset@ and increasing by
+-- @stride@ bytes for each successive draw. The parameters of each draw are
+-- encoded in an array of
+-- 'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures. If
+-- @drawCount@ is less than or equal to one, @stride@ is ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-06479# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
+--     the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02691# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
+--     operations as a result of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering, as specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
+--     reduction mode of either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     as a result of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering together with minmax filtering, as
+--     specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-flags-02696# Any
+--     'Vulkan.Core10.Handles.Image' created with a
+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
+--     sampled as a result of this command /must/ only be sampled using a
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06423# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image
+--     or storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-OpTypeImage-06424# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
+--     storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02697# For each set /n/ that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a descriptor set /must/
+--     have been bound to /n/ at the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
+--     feature is not enabled, then for each push constant that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a push constant value
+--     /must/ have been set for the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
+--     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
+--     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
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02700# A valid pipeline /must/
+--     be bound to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command requires any dynamic state, that state
+--     /must/ have been set or inherited (if the
+--     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
+--     @commandBuffer@, and done so after any previously bound pipeline
+--     with the corresponding state not specified as dynamic
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02859# There /must/ not have
+--     been any calls to dynamic state setting commands for any state not
+--     specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02702# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used to sample from any
+--     'Vulkan.Core10.Handles.Image' with a
+--     'Vulkan.Core10.Handles.ImageView' of the type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
+--     any shader stage
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02703# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02704# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values, in any shader stage
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02705# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a uniform buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02706# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a storage buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707# If
+--     @commandBuffer@ is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource accessed by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04115# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     image view’s format
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469# If a
+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     buffer view’s format
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04470# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04471# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04472# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-SampledType-04473# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
+--     created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-renderPass-02684# The current render
+--     pass /must/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility compatible>
+--     with the @renderPass@ member of the
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-subpass-02685# The subpass index of
+--     the current render pass /must/ be equal to the @subpass@ member of
+--     the 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' structure
+--     specified when creating the 'Vulkan.Core10.Handles.Pipeline' bound
+--     to
+--     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02686# Every input attachment
+--     used by the current subpass /must/ be bound to the pipeline via a
+--     descriptor set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04584# Image subresources used
+--     as attachments in the current render pass /must/ not be accessed in
+--     any way other than as an attachment by this command, except for
+--     cases involving read-only access to depth\/stencil attachments as
+--     described in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-attachment-nonattachment Render Pass>
+--     chapter
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688# If
+--     the draw is recorded in a render pass instance with multiview
+--     enabled, the maximum instance index /must/ be less than or equal to
+--     'Vulkan.Core11.Promoted_From_VK_KHR_multiview.PhysicalDeviceMultiviewProperties'::@maxMultiviewInstanceIndex@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689# If the
+--     bound graphics pipeline was created with
+--     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'::@sampleLocationsEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE' and the current subpass
+--     has a depth\/stencil attachment, then that attachment /must/ have
+--     been created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-03417# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-scissorCount-03418# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ match the
+--     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
+--     of the pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-03419# If the bound
+--     graphics pipeline state was created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic states enabled then both
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ match the @scissorCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04137# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04138# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04139# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic state enabled, then the bound graphics pipeline /must/ have
+--     been created with
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-viewportCount-04140# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     and
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
+--     dynamic states enabled then the @viewportCount@ parameter in the
+--     last call to
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
+--     /must/ be greater than or equal to the @viewportCount@ parameter in
+--     the last call to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142# If
+--     the bound graphics pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled and a
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
+--     structure chained from @VkPipelineVieportCreateInfo@, then the bound
+--     graphics pipeline /must/ have been created with
+--     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
+--     greater or equal to the @viewportCount@ parameter in the last call
+--     to
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04876# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04877# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
+--     dynamic state enabled then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-logicOp-04878# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command and the @logicOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.LogicOp.LogicOp' value
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     limit is not supported, the bound graphics pipeline was created with
+--     the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+--     dynamic state enabled, and any of the shader stages of the bound
+--     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
+--     then
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @viewportCount@ parameter of
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-blendEnable-04727# If rasterization
+--     is not disabled in the bound graphics pipeline, then for each color
+--     attachment in the subpass, if the corresponding image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     do not contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
+--     then the @blendEnable@ member of the corresponding element of the
+--     @pAttachments@ member of @pColorBlendState@ /must/ be
+--     'Vulkan.Core10.FundamentalTypes.FALSE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740# If
+--     rasterization is not disabled in the bound graphics pipeline, and
+--     neither the @VK_AMD_mixed_attachment_samples@ nor the
+--     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, then
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     /must/ be the same as the current subpass color and\/or
+--     depth\/stencil attachments
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06172# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06173# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06174# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06175# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06176# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pDepthAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pDepthAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the depth attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06177# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @imageView@ member of @pStencilAttachment@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
+--     @pStencilAttachment@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL',
+--     this command /must/ not write any values to the stencil attachment
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-viewMask-06178# If the current render
+--     pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound graphics pipeline /must/ have been created with
+--     a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
+--     equal to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06180# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
+--     corresponding element of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06182# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the 'Vulkan.Core10.Enums.Format.Format' used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06183# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-imageView-06184# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
+--     bound graphics pipeline /must/ have been created with
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185# If the
+--     currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the corresponding element of the
+--     @pColorAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created with a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06188# If the
+--     currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and the current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     with a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter greater than @0@, then each element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     array with a @imageView@ not equal to
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
+--     with a sample count equal to the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06189# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190# If the
+--     current render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline was created without a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, and
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+--     used to create the currently bound graphics pipeline /must/ be equal
+--     to the sample count used to create
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-renderPass-06198# If the current
+--     render pass instance was begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the currently bound pipeline /must/ have been created with a
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
+--     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04007# All vertex input bindings
+--     accessed via vertex input variables declared in the vertex shader
+--     entry point’s interface /must/ have either valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' buffers bound
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04008# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, all vertex input bindings accessed via
+--     vertex input variables declared in the vertex shader entry point’s
+--     interface /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-02721# For a given vertex buffer
+--     binding, any attribute data fetched /must/ be entirely contained
+--     within the corresponding vertex buffer binding, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input ???>
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420# If the bound
+--     graphics pipeline state was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command, and the @primitiveTopology@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
+--     /must/ be of the same
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>
+--     as the pipeline
+--     'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+--     state
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04912# If the bound graphics
+--     pipeline was created with both the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     and
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic states enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-pStrides-04913# If the bound graphics
+--     pipeline was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     dynamic state enabled, but not the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command, and the @pStrides@ parameter of
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
+--     /must/ not be @NULL@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04914# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+--     dynamic state enabled, then
+--     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     draw command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04875# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPatchControlPointsEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-None-04879# If the bound graphics
+--     pipeline state was created with the
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     dynamic state enabled then
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
+--     /must/ have been called in the current command buffer prior to this
+--     drawing command
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-stage-06481# The bound graphics
+--     pipeline /must/ not have been created with the
+--     'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo'::@stage@
+--     member of an element of
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@ set
+--     to
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
+--     or
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-buffer-02708# If @buffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-buffer-02709# @buffer@ /must/ have
+--     been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-offset-02710# @offset@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711# @commandBuffer@
+--     /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02718# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multi-draw indirect>
+--     feature is not enabled, @drawCount@ /must/ be @0@ or @1@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-02719# @drawCount@ /must/
+--     be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxDrawIndirectCount@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00528# If @drawCount@ is
+--     greater than @1@, @stride@ /must/ be a multiple of @4@ and /must/ be
+--     greater than or equal to
+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand')
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-firstInstance-00530# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
+--     feature is not enabled, all the @firstInstance@ members of the
+--     'Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand' structures
+--     accessed by this command /must/ be @0@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00539# If @drawCount@ is
+--     equal to @1@, (@offset@ +
+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))
+--     /must/ be less than or equal to the size of @buffer@
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-drawCount-00540# If @drawCount@ is
+--     greater than @1@, (@stride@ × (@drawCount@ - 1) + @offset@ +
+--     @sizeof@('Vulkan.Core10.OtherTypes.DrawIndexedIndirectCommand'))
+--     /must/ be less than or equal to the size of @buffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-buffer-parameter# @buffer@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-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-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-renderpass# This command /must/ only
+--     be called inside of a render pass instance
+--
+-- -   #VUID-vkCmdDrawIndexedIndirect-commonparent# Both of @buffer@, and
+--     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDrawIndexedIndirect :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer into which the command is
+                          -- recorded.
+                          CommandBuffer
+                       -> -- | @buffer@ is the buffer containing draw parameters.
+                          Buffer
+                       -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.
+                          ("offset" ::: DeviceSize)
+                       -> -- | @drawCount@ is the number of draws to execute, and /can/ be zero.
+                          ("drawCount" ::: Word32)
+                       -> -- | @stride@ is the byte stride between successive sets of draw parameters.
+                          ("stride" ::: Word32)
+                       -> io ()
+cmdDrawIndexedIndirect commandBuffer buffer offset drawCount stride = liftIO $ do
+  let vkCmdDrawIndexedIndirectPtr = pVkCmdDrawIndexedIndirect (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDrawIndexedIndirectPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDrawIndexedIndirect is null" Nothing Nothing
+  let vkCmdDrawIndexedIndirect' = mkVkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirectPtr
+  traceAroundEvent "vkCmdDrawIndexedIndirect" (vkCmdDrawIndexedIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset) (drawCount) (stride))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatch
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdDispatch - Dispatch compute work items
+--
+-- = Description
+--
+-- When the command is executed, a global workgroup consisting of
+-- @groupCountX@ × @groupCountY@ × @groupCountZ@ local workgroups is
+-- assembled.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDispatch-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDispatch-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDispatch-None-06479# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
+--     the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
+--
+-- -   #VUID-vkCmdDispatch-None-02691# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
+--     operations as a result of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDispatch-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatch-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering, as specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDispatch-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
+--     reduction mode of either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     as a result of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering together with minmax filtering, as
+--     specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDispatch-flags-02696# Any 'Vulkan.Core10.Handles.Image'
+--     created with a 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@
+--     containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
+--     sampled as a result of this command /must/ only be sampled using a
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatch-OpTypeImage-06423# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image
+--     or storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatch-OpTypeImage-06424# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
+--     storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatch-None-02697# For each set /n/ that is statically
+--     used by the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline
+--     bind point used by this command, a descriptor set /must/ have been
+--     bound to /n/ at the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
+--     feature is not enabled, then for each push constant that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a push constant value
+--     /must/ have been set for the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
+--     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 if they
+--     are statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
+--     the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatch-None-02700# A valid pipeline /must/ be bound to
+--     the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatch-commandBuffer-02701# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command requires any dynamic state, that state
+--     /must/ have been set or inherited (if the
+--     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
+--     @commandBuffer@, and done so after any previously bound pipeline
+--     with the corresponding state not specified as dynamic
+--
+-- -   #VUID-vkCmdDispatch-None-02859# There /must/ not have been any calls
+--     to dynamic state setting commands for any state not specified as
+--     dynamic in the 'Vulkan.Core10.Handles.Pipeline' object bound to the
+--     pipeline bind point used by this command, since that pipeline was
+--     bound
+--
+-- -   #VUID-vkCmdDispatch-None-02702# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used to sample from any
+--     'Vulkan.Core10.Handles.Image' with a
+--     'Vulkan.Core10.Handles.ImageView' of the type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
+--     any shader stage
+--
+-- -   #VUID-vkCmdDispatch-None-02703# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
+--
+-- -   #VUID-vkCmdDispatch-None-02704# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values, in any shader stage
+--
+-- -   #VUID-vkCmdDispatch-None-02705# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a uniform buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDispatch-None-02706# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a storage buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDispatch-commandBuffer-02707# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource accessed by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDispatch-None-04115# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     image view’s format
+--
+-- -   #VUID-vkCmdDispatch-OpImageWrite-04469# If a
+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     buffer view’s format
+--
+-- -   #VUID-vkCmdDispatch-SampledType-04470# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDispatch-SampledType-04471# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDispatch-SampledType-04472# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDispatch-SampledType-04473# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDispatch-sparseImageInt64Atomics-04474# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDispatch-sparseImageInt64Atomics-04475# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
+--     created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDispatch-commandBuffer-02712# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource written to by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be an unprotected resource
+--
+-- -   #VUID-vkCmdDispatch-commandBuffer-02713# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, pipeline stages other than the framebuffer-space
+--     and compute stages in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command /must/ not
+--     write to any resource
+--
+-- -   #VUID-vkCmdDispatch-commandBuffer-04617# If any of the shader stages
+--     of the 'Vulkan.Core10.Handles.Pipeline' bound to the pipeline bind
+--     point used by this command uses the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+--     capability, then @commandBuffer@ /must/ not be a protected command
+--     buffer
+--
+-- -   #VUID-vkCmdDispatch-groupCountX-00386# @groupCountX@ /must/ be less
+--     than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[0]
+--
+-- -   #VUID-vkCmdDispatch-groupCountY-00387# @groupCountY@ /must/ be less
+--     than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[1]
+--
+-- -   #VUID-vkCmdDispatch-groupCountZ-00388# @groupCountZ@ /must/ be less
+--     than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxComputeWorkGroupCount@[2]
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDispatch-commandBuffer-parameter# @commandBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDispatch-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-vkCmdDispatch-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support compute operations
+--
+-- -   #VUID-vkCmdDispatch-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdDispatch :: forall io
+             . (MonadIO io)
+            => -- | @commandBuffer@ is the command buffer into which the command will be
+               -- recorded.
+               CommandBuffer
+            -> -- | @groupCountX@ is the number of local workgroups to dispatch in the X
+               -- dimension.
+               ("groupCountX" ::: Word32)
+            -> -- | @groupCountY@ is the number of local workgroups to dispatch in the Y
+               -- dimension.
+               ("groupCountY" ::: Word32)
+            -> -- | @groupCountZ@ is the number of local workgroups to dispatch in the Z
+               -- dimension.
+               ("groupCountZ" ::: Word32)
+            -> io ()
+cmdDispatch commandBuffer groupCountX groupCountY groupCountZ = liftIO $ do
+  let vkCmdDispatchPtr = pVkCmdDispatch (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDispatchPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatch is null" Nothing Nothing
+  let vkCmdDispatch' = mkVkCmdDispatch vkCmdDispatchPtr
+  traceAroundEvent "vkCmdDispatch" (vkCmdDispatch' (commandBufferHandle (commandBuffer)) (groupCountX) (groupCountY) (groupCountZ))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdDispatchIndirect
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> IO ()
+
+-- | vkCmdDispatchIndirect - Dispatch compute work items with indirect
+-- parameters
+--
+-- = Description
+--
+-- 'cmdDispatchIndirect' behaves similarly to 'cmdDispatch' except that the
+-- parameters are read by the device from a buffer during execution. The
+-- parameters of the dispatch are encoded in a
+-- 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand' structure taken from
+-- @buffer@ starting at @offset@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdDispatchIndirect-magFilter-04553# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @magFilter@ or
+--     @minFilter@ equal to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' and
+--     @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE' is
+--     used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-mipmapMode-04770# If a
+--     'Vulkan.Core10.Handles.Sampler' created with @mipmapMode@ equal to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'
+--     and @compareEnable@ equal to 'Vulkan.Core10.FundamentalTypes.FALSE'
+--     is used to sample a 'Vulkan.Core10.Handles.ImageView' as a result of
+--     this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-06479# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation depth comparison>,
+--     the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02691# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
+--     operations as a result of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02692# If a
+--     'Vulkan.Core10.Handles.ImageView' is sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command, then the image view’s
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-filterCubic-02694# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' as a result
+--     of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering, as specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubic@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695# Any
+--     'Vulkan.Core10.Handles.ImageView' being sampled with
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT' with a
+--     reduction mode of either
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MIN'
+--     or
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_MAX'
+--     as a result of this command /must/ have a
+--     'Vulkan.Core10.Enums.ImageViewType.ImageViewType' and format that
+--     supports cubic filtering together with minmax filtering, as
+--     specified by
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT'::@filterCubicMinmax@
+--     returned by
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceImageFormatProperties2'
+--
+-- -   #VUID-vkCmdDispatchIndirect-flags-02696# Any
+--     'Vulkan.Core10.Handles.Image' created with a
+--     'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'
+--     sampled as a result of this command /must/ only be sampled using a
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SamplerAddressMode' of
+--     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'
+--
+-- -   #VUID-vkCmdDispatchIndirect-OpTypeImage-06423# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being written as a storage image
+--     or storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-OpTypeImage-06424# Any
+--     'Vulkan.Core10.Handles.ImageView' or
+--     'Vulkan.Core10.Handles.BufferView' being read as a storage image or
+--     storage texel buffer where the image format field of the
+--     @OpTypeImage@ is @Unknown@ /must/ have image format features that
+--     support
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02697# For each set /n/ that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a descriptor set /must/
+--     have been bound to /n/ at the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for set
+--     /n/, with the 'Vulkan.Core10.Handles.PipelineLayout' used to 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-maintenance4-06425# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-maintenance4 maintenance4>
+--     feature is not enabled, then for each push constant that is
+--     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
+--     pipeline bind point used by this command, a push constant value
+--     /must/ have been set for the same pipeline bind point, with a
+--     'Vulkan.Core10.Handles.PipelineLayout' that is compatible for push
+--     constants, with the 'Vulkan.Core10.Handles.PipelineLayout' used to
+--     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
+--     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
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02700# A valid pipeline /must/ be
+--     bound to the pipeline bind point used by this command
+--
+-- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02701# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command requires any dynamic state, that state
+--     /must/ have been set or inherited (if the
+--     @VK_NV_inherited_viewport_scissor@ extension is enabled) for
+--     @commandBuffer@, and done so after any previously bound pipeline
+--     with the corresponding state not specified as dynamic
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02859# There /must/ not have been
+--     any calls to dynamic state setting commands for any state not
+--     specified as dynamic in the 'Vulkan.Core10.Handles.Pipeline' object
+--     bound to the pipeline bind point used by this command, since that
+--     pipeline was bound
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02702# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used to sample from any
+--     'Vulkan.Core10.Handles.Image' with a
+--     'Vulkan.Core10.Handles.ImageView' of the type
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_3D',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_1D_ARRAY',
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY' or
+--     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY', in
+--     any shader stage
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02703# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions with
+--     @ImplicitLod@, @Dref@ or @Proj@ in their name, in any shader stage
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02704# If the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command accesses a
+--     'Vulkan.Core10.Handles.Sampler' object that uses unnormalized
+--     coordinates, that sampler /must/ not be used with any of the SPIR-V
+--     @OpImageSample*@ or @OpImageSparseSample*@ instructions that
+--     includes a LOD bias or any offset values, in any shader stage
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02705# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a uniform buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-02706# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robust buffer access>
+--     feature is not enabled, and if the 'Vulkan.Core10.Handles.Pipeline'
+--     object bound to the pipeline bind point used by this command
+--     accesses a storage buffer, it /must/ not access values outside of
+--     the range of the buffer as specified in the descriptor set bound to
+--     the same pipeline bind point
+--
+-- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02707# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, any resource accessed by the
+--     'Vulkan.Core10.Handles.Pipeline' object bound to the pipeline bind
+--     point used by this command /must/ not be a protected resource
+--
+-- -   #VUID-vkCmdDispatchIndirect-None-04115# If a
+--     'Vulkan.Core10.Handles.ImageView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     image view’s format
+--
+-- -   #VUID-vkCmdDispatchIndirect-OpImageWrite-04469# If a
+--     'Vulkan.Core10.Handles.BufferView' is accessed using @OpImageWrite@
+--     as a result of this command, then the @Type@ of the @Texel@ operand
+--     of that instruction /must/ have at least as many components as the
+--     buffer view’s format
+--
+-- -   #VUID-vkCmdDispatchIndirect-SampledType-04470# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDispatchIndirect-SampledType-04471# If a
+--     'Vulkan.Core10.Handles.ImageView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDispatchIndirect-SampledType-04472# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a 64-bit component
+--     width is accessed as a result of this command, the @SampledType@ of
+--     the @OpTypeImage@ operand of that instruction /must/ have a @Width@
+--     of 64
+--
+-- -   #VUID-vkCmdDispatchIndirect-SampledType-04473# If a
+--     'Vulkan.Core10.Handles.BufferView' with a
+--     'Vulkan.Core10.Enums.Format.Format' that has a component width less
+--     than 64-bit is accessed as a result of this command, the
+--     @SampledType@ of the @OpTypeImage@ operand of that instruction
+--     /must/ have a @Width@ of 32
+--
+-- -   #VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Image' objects
+--     created with the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     feature is not enabled, 'Vulkan.Core10.Handles.Buffer' objects
+--     created with the
+--     'Vulkan.Core10.Enums.BufferCreateFlagBits.BUFFER_CREATE_SPARSE_RESIDENCY_BIT'
+--     flag /must/ not be accessed by atomic instructions through an
+--     @OpTypeImage@ with a @SampledType@ with a @Width@ of 64 by this
+--     command
+--
+-- -   #VUID-vkCmdDispatchIndirect-buffer-02708# If @buffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdDispatchIndirect-buffer-02709# @buffer@ /must/ have been
+--     created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_INDIRECT_BUFFER_BIT'
+--     bit set
+--
+-- -   #VUID-vkCmdDispatchIndirect-offset-02710# @offset@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdDispatchIndirect-commandBuffer-02711# @commandBuffer@
+--     /must/ not be a protected command buffer
+--
+-- -   #VUID-vkCmdDispatchIndirect-offset-00407# The sum of @offset@ and
+--     the size of 'Vulkan.Core10.OtherTypes.DispatchIndirectCommand'
+--     /must/ be less than or equal to the size of @buffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdDispatchIndirect-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdDispatchIndirect-buffer-parameter# @buffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdDispatchIndirect-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-vkCmdDispatchIndirect-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support compute operations
+--
+-- -   #VUID-vkCmdDispatchIndirect-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdDispatchIndirect-commonparent# Both of @buffer@, and
+--     @commandBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Compute                                                                                                               |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdDispatchIndirect :: forall io
+                     . (MonadIO io)
+                    => -- | @commandBuffer@ is the command buffer into which the command will be
+                       -- recorded.
+                       CommandBuffer
+                    -> -- | @buffer@ is the buffer containing dispatch parameters.
+                       Buffer
+                    -> -- | @offset@ is the byte offset into @buffer@ where parameters begin.
+                       ("offset" ::: DeviceSize)
+                    -> io ()
+cmdDispatchIndirect commandBuffer buffer offset = liftIO $ do
+  let vkCmdDispatchIndirectPtr = pVkCmdDispatchIndirect (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdDispatchIndirectPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdDispatchIndirect is null" Nothing Nothing
+  let vkCmdDispatchIndirect' = mkVkCmdDispatchIndirect vkCmdDispatchIndirectPtr
+  traceAroundEvent "vkCmdDispatchIndirect" (vkCmdDispatchIndirect' (commandBufferHandle (commandBuffer)) (buffer) (offset))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyBuffer
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Buffer -> Word32 -> Ptr BufferCopy -> IO ()
+
+-- | vkCmdCopyBuffer - Copy data between buffer regions
+--
+-- = Description
+--
+-- Each region in @pRegions@ is copied from the source buffer to the same
+-- region of the destination buffer. @srcBuffer@ and @dstBuffer@ /can/ be
+-- the same buffer or alias the same memory, but the resulting values are
+-- undefined if the copy regions overlap in memory.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-01822# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-01823# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-01824# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
+--
+-- -   #VUID-vkCmdCopyBuffer-srcOffset-00113# The @srcOffset@ member of
+--     each element of @pRegions@ /must/ be less than the size of
+--     @srcBuffer@
+--
+-- -   #VUID-vkCmdCopyBuffer-dstOffset-00114# The @dstOffset@ member of
+--     each element of @pRegions@ /must/ be less than the size of
+--     @dstBuffer@
+--
+-- -   #VUID-vkCmdCopyBuffer-size-00115# The @size@ member of each element
+--     of @pRegions@ /must/ be less than or equal to the size of
+--     @srcBuffer@ minus @srcOffset@
+--
+-- -   #VUID-vkCmdCopyBuffer-size-00116# The @size@ member of each element
+--     of @pRegions@ /must/ be less than or equal to the size of
+--     @dstBuffer@ minus @dstOffset@
+--
+-- -   #VUID-vkCmdCopyBuffer-pRegions-00117# The union of the source
+--     regions, and the union of the destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-vkCmdCopyBuffer-srcBuffer-00118# @srcBuffer@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyBuffer-srcBuffer-00119# If @srcBuffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyBuffer-dstBuffer-00120# @dstBuffer@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyBuffer-dstBuffer-00121# If @dstBuffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyBuffer-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyBuffer-srcBuffer-parameter# @srcBuffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdCopyBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdCopyBuffer-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'BufferCopy'
+--     structures
+--
+-- -   #VUID-vkCmdCopyBuffer-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-vkCmdCopyBuffer-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyBuffer-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyBuffer-regionCount-arraylength# @regionCount@ /must/
+--     be greater than @0@
+--
+-- -   #VUID-vkCmdCopyBuffer-commonparent# Each of @commandBuffer@,
+--     @dstBuffer@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'BufferCopy',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdCopyBuffer :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which the command will be
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @srcBuffer@ is the source buffer.
+                 ("srcBuffer" ::: Buffer)
+              -> -- | @dstBuffer@ is the destination buffer.
+                 ("dstBuffer" ::: Buffer)
+              -> -- | @pRegions@ is a pointer to an array of 'BufferCopy' structures
+                 -- specifying the regions to copy.
+                 ("regions" ::: Vector BufferCopy)
+              -> io ()
+cmdCopyBuffer commandBuffer srcBuffer dstBuffer regions = liftIO . evalContT $ do
+  let vkCmdCopyBufferPtr = pVkCmdCopyBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyBufferPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBuffer is null" Nothing Nothing
+  let vkCmdCopyBuffer' = mkVkCmdCopyBuffer vkCmdCopyBufferPtr
+  pPRegions <- ContT $ allocaBytes @BufferCopy ((Data.Vector.length (regions)) * 24)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (24 * (i)) :: Ptr BufferCopy) (e)) (regions)
+  lift $ traceAroundEvent "vkCmdCopyBuffer" (vkCmdCopyBuffer' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyImage
+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageCopy -> IO ()
+
+-- | vkCmdCopyImage - Copy data between images
+--
+-- = Description
+--
+-- Each region in @pRegions@ is copied from the source image to the same
+-- region of the destination image. @srcImage@ and @dstImage@ /can/ be the
+-- same image or alias the same memory.
+--
+-- The formats of @srcImage@ and @dstImage@ /must/ be compatible. Formats
+-- are compatible if they share the same class, as shown in the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility Compatible Formats>
+-- table. Depth\/stencil formats /must/ match exactly.
+--
+-- If either @srcImage@ or @dstImage@ has a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+-- regions of each plane to be copied /must/ be specified separately using
+-- the @srcSubresource@ and @dstSubresource@ members of the 'ImageCopy'
+-- structure. In this case, the @aspectMask@ of the @srcSubresource@ or
+-- @dstSubresource@ that refers to the multi-planar image /must/ be
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'. For
+-- the purposes of 'cmdCopyImage', each plane of a multi-planar image is
+-- treated as having the format listed in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes>
+-- for the plane identified by the @aspectMask@ of the corresponding
+-- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'
+-- and to coordinates used in the copy, which correspond to texels in the
+-- /plane/ rather than how these texels map to coordinates in the image as
+-- a whole.
+--
+-- Note
+--
+-- For example, the
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' plane
+-- of a 'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_420_UNORM' image
+-- is compatible with an image of format
+-- 'Vulkan.Core10.Enums.Format.FORMAT_R8G8_UNORM' and (less usefully) with
+-- the 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+-- plane of an image of format
+-- 'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16',
+-- as each texel is 2 bytes in size.
+--
+-- 'cmdCopyImage' allows copying between /size-compatible/ compressed and
+-- uncompressed internal formats. Formats are size-compatible if the texel
+-- block size of the uncompressed format is equal to the texel block size
+-- of the compressed format. Such a copy does not perform on-the-fly
+-- compression or decompression. When copying from an uncompressed format
+-- to a compressed format, each texel of uncompressed data of the source
+-- image is copied as a raw value to the corresponding compressed texel
+-- block of the destination image. When copying from a compressed format to
+-- an uncompressed format, each compressed texel block of the source image
+-- is copied as a raw value to the corresponding texel of uncompressed data
+-- in the destination image. Thus, for example, it is legal to copy between
+-- a 128-bit uncompressed format and a compressed format which has a
+-- 128-bit sized compressed texel block representing 4×4 texels (using 8
+-- bits per texel), or between a 64-bit uncompressed format and a
+-- compressed format which has a 64-bit sized compressed texel block
+-- representing 4×4 texels (using 4 bits per texel).
+--
+-- When copying between compressed and uncompressed formats the @extent@
+-- members represent the texel dimensions of the source image and not the
+-- destination. When copying from a compressed image to an uncompressed
+-- image the image texel dimensions written to the uncompressed image will
+-- be source extent divided by the compressed texel block dimensions. When
+-- copying from an uncompressed image to a compressed image the image texel
+-- dimensions written to the compressed image will be the source extent
+-- multiplied by the compressed texel block dimensions. In both cases the
+-- number of bytes read and the number of bytes written will be identical.
+--
+-- Copying to or from block-compressed images is typically done in
+-- multiples of the compressed texel block size. For this reason the
+-- @extent@ /must/ be a multiple of the compressed texel block dimension.
+-- There is one exception to this rule which is /required/ to handle
+-- compressed images created with dimensions that are not a multiple of the
+-- compressed texel block dimensions: if the @srcImage@ is compressed,
+-- then:
+--
+-- -   If @extent.width@ is not a multiple of the compressed texel block
+--     width, then (@extent.width@ + @srcOffset.x@) /must/ equal the image
+--     subresource width.
+--
+-- -   If @extent.height@ is not a multiple of the compressed texel block
+--     height, then (@extent.height@ + @srcOffset.y@) /must/ equal the
+--     image subresource height.
+--
+-- -   If @extent.depth@ is not a multiple of the compressed texel block
+--     depth, then (@extent.depth@ + @srcOffset.z@) /must/ equal the image
+--     subresource depth.
+--
+-- Similarly, if the @dstImage@ is compressed, then:
+--
+-- -   If @extent.width@ is not a multiple of the compressed texel block
+--     width, then (@extent.width@ + @dstOffset.x@) /must/ equal the image
+--     subresource width.
+--
+-- -   If @extent.height@ is not a multiple of the compressed texel block
+--     height, then (@extent.height@ + @dstOffset.y@) /must/ equal the
+--     image subresource height.
+--
+-- -   If @extent.depth@ is not a multiple of the compressed texel block
+--     depth, then (@extent.depth@ + @dstOffset.z@) /must/ equal the image
+--     subresource depth.
+--
+-- This allows the last compressed texel block of the image in each
+-- non-multiple dimension to be included as a source or destination of the
+-- copy.
+--
+-- “@_422@” image formats that are not
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+-- are treated as having a 2×1 compressed texel block for the purposes of
+-- these rules.
+--
+-- 'cmdCopyImage' /can/ be used to copy image data between multisample
+-- images, but both images /must/ have the same number of samples.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyImage-commandBuffer-01825# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyImage-commandBuffer-01826# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyImage-commandBuffer-01827# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- -   #VUID-vkCmdCopyImage-pRegions-00124# The union of all source
+--     regions, and the union of all destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01995# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-00126# @srcImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01546# If @srcImage@ is non-sparse
+--     then the image or /disjoint/ plane to be copied /must/ be bound
+--     completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyImage-srcImageLayout-00128# @srcImageLayout@ /must/
+--     specify the layout of the image subresources of @srcImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdCopyImage-srcImageLayout-01917# @srcImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01996# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-00131# @dstImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01547# If @dstImage@ is non-sparse
+--     then the image or /disjoint/ plane that is the destination of the
+--     copy /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyImage-dstImageLayout-00133# @dstImageLayout@ /must/
+--     specify the layout of the image subresources of @dstImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdCopyImage-dstImageLayout-01395# @dstImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01548# If the
+--     'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
+--     @dstImage@ is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
+--     @dstImage@ /must/ be compatible, as defined
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibility above>
+--
+-- -   #VUID-vkCmdCopyImage-None-01549# In a copy to or from a plane of a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image>,
+--     the 'Vulkan.Core10.Enums.Format.Format' of the image and plane
+--     /must/ be compatible according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes>
+--     for the plane being copied
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-00136# The sample count of @srcImage@
+--     and @dstImage@ /must/ match
+--
+-- -   #VUID-vkCmdCopyImage-srcSubresource-01696# The
+--     @srcSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-vkCmdCopyImage-dstSubresource-01697# The
+--     @dstSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-vkCmdCopyImage-srcSubresource-01698# The
+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-vkCmdCopyImage-dstSubresource-01699# The
+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-vkCmdCopyImage-srcOffset-01783# The @srcOffset@ and @extent@
+--     members of each element of @pRegions@ /must/ respect the image
+--     transfer granularity requirements of @commandBuffer@’s command
+--     pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-vkCmdCopyImage-dstOffset-01784# The @dstOffset@ and @extent@
+--     members of each element of @pRegions@ /must/ respect the image
+--     transfer granularity requirements of @commandBuffer@’s command
+--     pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-02542# @dstImage@ and @srcImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01551# If neither @srcImage@ nor
+--     @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
+--     then for each element of @pRegions@, @srcSubresource.aspectMask@ and
+--     @dstSubresource.aspectMask@ /must/ match
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01552# If @srcImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
+--     then for each element of @pRegions@, @srcSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01553# If @srcImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
+--     then for each element of @pRegions@, @srcSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01554# If @dstImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
+--     then for each element of @pRegions@, @dstSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01555# If @dstImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
+--     then for each element of @pRegions@, @dstSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01556# If @srcImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
+--     and the @dstImage@ does not have a multi-planar image format, then
+--     for each element of @pRegions@, @dstSubresource.aspectMask@ /must/
+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01557# If @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
+--     and the @srcImage@ does not have a multi-planar image format, then
+--     for each element of @pRegions@, @srcSubresource.aspectMask@ /must/
+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-04443# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @srcSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-04444# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @dstSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImage-aspectMask-00142# For each element of
+--     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
+--     present in @srcImage@
+--
+-- -   #VUID-vkCmdCopyImage-aspectMask-00143# For each element of
+--     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
+--     present in @dstImage@
+--
+-- -   #VUID-vkCmdCopyImage-srcOffset-00144# For each element of
+--     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImage-srcOffset-00145# For each element of
+--     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-00146# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImage-srcOffset-00147# For each element of
+--     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01785# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01786# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01787# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @srcOffset.z@ /must/ be @0@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01788# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @dstOffset.z@ /must/ be @0@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01790# If @srcImage@ and @dstImage@
+--     are both of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then
+--     for each element of @pRegions@, @extent.depth@ /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01791# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @dstImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
+--     element of @pRegions@, @extent.depth@ /must/ equal
+--     @srcSubresource.layerCount@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01792# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @srcImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
+--     element of @pRegions@, @extent.depth@ /must/ equal
+--     @dstSubresource.layerCount@
+--
+-- -   #VUID-vkCmdCopyImage-dstOffset-00150# For each element of
+--     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyImage-dstOffset-00151# For each element of
+--     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-00152# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImage-dstOffset-00153# For each element of
+--     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01727# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, all members of @srcOffset@
+--     /must/ be a multiple of the corresponding dimensions of the
+--     compressed texel block
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01728# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@extent.width@ +
+--     @srcOffset.x@) /must/ equal the width of the specified
+--     @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01729# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.height@ /must/ be a
+--     multiple of the compressed texel block height or (@extent.height@ +
+--     @srcOffset.y@) /must/ equal the height of the specified
+--     @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-01730# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@extent.depth@ +
+--     @srcOffset.z@) /must/ equal the depth of the specified
+--     @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01731# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, all members of @dstOffset@
+--     /must/ be a multiple of the corresponding dimensions of the
+--     compressed texel block
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01732# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@extent.width@ +
+--     @dstOffset.x@) /must/ equal the width of the specified
+--     @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01733# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.height@ /must/ be a
+--     multiple of the compressed texel block height or (@extent.height@ +
+--     @dstOffset.y@) /must/ equal the height of the specified
+--     @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-01734# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@extent.depth@ +
+--     @dstOffset.z@) /must/ equal the depth of the specified
+--     @dstSubresource@ of @dstImage@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyImage-commandBuffer-parameter# @commandBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyImage-srcImage-parameter# @srcImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdCopyImage-srcImageLayout-parameter# @srcImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-vkCmdCopyImage-dstImage-parameter# @dstImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdCopyImage-dstImageLayout-parameter# @dstImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-vkCmdCopyImage-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'ImageCopy'
+--     structures
+--
+-- -   #VUID-vkCmdCopyImage-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-vkCmdCopyImage-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyImage-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyImage-regionCount-arraylength# @regionCount@ /must/
+--     be greater than @0@
+--
+-- -   #VUID-vkCmdCopyImage-commonparent# Each of @commandBuffer@,
+--     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
+-- 'ImageCopy', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+cmdCopyImage :: forall io
+              . (MonadIO io)
+             => -- | @commandBuffer@ is the command buffer into which the command will be
+                -- recorded.
+                CommandBuffer
+             -> -- | @srcImage@ is the source image.
+                ("srcImage" ::: Image)
+             -> -- | @srcImageLayout@ is the current layout of the source image subresource.
+                ("srcImageLayout" ::: ImageLayout)
+             -> -- | @dstImage@ is the destination image.
+                ("dstImage" ::: Image)
+             -> -- | @dstImageLayout@ is the current layout of the destination image
+                -- subresource.
+                ("dstImageLayout" ::: ImageLayout)
+             -> -- | @pRegions@ is a pointer to an array of 'ImageCopy' structures specifying
+                -- the regions to copy.
+                ("regions" ::: Vector ImageCopy)
+             -> io ()
+cmdCopyImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do
+  let vkCmdCopyImagePtr = pVkCmdCopyImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImage is null" Nothing Nothing
+  let vkCmdCopyImage' = mkVkCmdCopyImage vkCmdCopyImagePtr
+  pPRegions <- ContT $ allocaBytes @ImageCopy ((Data.Vector.length (regions)) * 68)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageCopy) (e)) (regions)
+  lift $ traceAroundEvent "vkCmdCopyImage" (vkCmdCopyImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBlitImage
+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageBlit -> Filter -> IO ()
+
+-- | vkCmdBlitImage - Copy regions of an image, potentially performing format
+-- conversion,
+--
+-- = Description
+--
+-- 'cmdBlitImage' /must/ not be used for multisampled source or destination
+-- images. Use 'cmdResolveImage' for this purpose.
+--
+-- As the sizes of the source and destination extents /can/ differ in any
+-- dimension, texels in the source extent are scaled and filtered to the
+-- destination extent. Scaling occurs via the following operations:
+--
+-- -   For each destination texel, the integer coordinate of that texel is
+--     converted to an unnormalized texture coordinate, using the effective
+--     inverse of the equations described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-unnormalized-to-integer unnormalized to integer conversion>:
+--
+--     -   ubase = i + ½
+--
+--     -   vbase = j + ½
+--
+--     -   wbase = k + ½
+--
+-- -   These base coordinates are then offset by the first destination
+--     offset:
+--
+--     -   uoffset = ubase - xdst0
+--
+--     -   voffset = vbase - ydst0
+--
+--     -   woffset = wbase - zdst0
+--
+--     -   aoffset = a - @baseArrayCount@dst
+--
+-- -   The scale is determined from the source and destination regions, and
+--     applied to the offset coordinates:
+--
+--     -   scaleu = (xsrc1 - xsrc0) \/ (xdst1 - xdst0)
+--
+--     -   scalev = (ysrc1 - ysrc0) \/ (ydst1 - ydst0)
+--
+--     -   scalew = (zsrc1 - zsrc0) \/ (zdst1 - zdst0)
+--
+--     -   uscaled = uoffset × scaleu
+--
+--     -   vscaled = voffset × scalev
+--
+--     -   wscaled = woffset × scalew
+--
+-- -   Finally the source offset is added to the scaled coordinates, to
+--     determine the final unnormalized coordinates used to sample from
+--     @srcImage@:
+--
+--     -   u = uscaled + xsrc0
+--
+--     -   v = vscaled + ysrc0
+--
+--     -   w = wscaled + zsrc0
+--
+--     -   q = @mipLevel@
+--
+--     -   a = aoffset + @baseArrayCount@src
+--
+-- These coordinates are used to sample from the source image, as described
+-- in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures Image Operations chapter>,
+-- with the filter mode equal to that of @filter@, a mipmap mode of
+-- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_NEAREST' and
+-- an address mode of
+-- 'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE'.
+-- Implementations /must/ clamp at the edge of the source image, and /may/
+-- additionally clamp to the edge of the source region.
+--
+-- Note
+--
+-- Due to allowable rounding errors in the generation of the source texture
+-- coordinates, it is not always possible to guarantee exactly which source
+-- texels will be sampled for a given blit. As rounding errors are
+-- implementation-dependent, the exact results of a blitting operation are
+-- also implementation-dependent.
+--
+-- Blits are done layer by layer starting with the @baseArrayLayer@ member
+-- of @srcSubresource@ for the source and @dstSubresource@ for the
+-- destination. @layerCount@ layers are blitted to the destination image.
+--
+-- When blitting 3D textures, slices in the destination region bounded by
+-- @dstOffsets@[0].z and @dstOffsets@[1].z are sampled from slices in the
+-- source region bounded by @srcOffsets@[0].z and @srcOffsets@[1].z. If the
+-- @filter@ parameter is 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR' then
+-- the value sampled from the source image is taken by doing linear
+-- filtering using the interpolated __z__ coordinate represented by __w__
+-- in the previous equations. If the @filter@ parameter is
+-- 'Vulkan.Core10.Enums.Filter.FILTER_NEAREST' then the value sampled from
+-- the source image is taken from the single nearest slice, with an
+-- implementation-dependent arithmetic rounding mode.
+--
+-- The following filtering and conversion rules apply:
+--
+-- -   Integer formats /can/ only be converted to other integer formats
+--     with the same signedness.
+--
+-- -   No format conversion is supported between depth\/stencil images. The
+--     formats /must/ match.
+--
+-- -   Format conversions on unorm, snorm, unscaled and packed float
+--     formats of the copied aspect of the image are performed by first
+--     converting the pixels to float values.
+--
+-- -   For sRGB source formats, nonlinear RGB values are converted to
+--     linear representation prior to filtering.
+--
+-- -   After filtering, the float values are first clamped and then cast to
+--     the destination image format. In case of sRGB destination format,
+--     linear RGB values are converted to nonlinear representation before
+--     writing the pixel to the image.
+--
+-- Signed and unsigned integers are converted by first clamping to the
+-- representable range of the destination format, then casting the value.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBlitImage-commandBuffer-01834# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdBlitImage-commandBuffer-01835# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdBlitImage-commandBuffer-01836# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- -   #VUID-vkCmdBlitImage-pRegions-00215# The source region specified by
+--     each element of @pRegions@ /must/ be a region that is contained
+--     within @srcImage@
+--
+-- -   #VUID-vkCmdBlitImage-pRegions-00216# The destination region
+--     specified by each element of @pRegions@ /must/ be a region that is
+--     contained within @dstImage@
+--
+-- -   #VUID-vkCmdBlitImage-pRegions-00217# The union of all destination
+--     regions, specified by the elements of @pRegions@, /must/ not overlap
+--     in memory with any texel that /may/ be sampled during the blit
+--     operation
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-01999# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-06421# @srcImage@ /must/ not use a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00219# @srcImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00220# If @srcImage@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdBlitImage-srcImageLayout-00221# @srcImageLayout@ /must/
+--     specify the layout of the image subresources of @srcImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdBlitImage-srcImageLayout-01398# @srcImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-02000# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-06422# @dstImage@ /must/ not use a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-00224# @dstImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-00225# If @dstImage@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdBlitImage-dstImageLayout-00226# @dstImageLayout@ /must/
+--     specify the layout of the image subresources of @dstImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdBlitImage-dstImageLayout-01399# @dstImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00229# If either of @srcImage@ or
+--     @dstImage@ was created with a signed integer
+--     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
+--     created with a signed integer 'Vulkan.Core10.Enums.Format.Format'
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00230# If either of @srcImage@ or
+--     @dstImage@ was created with an unsigned integer
+--     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
+--     created with an unsigned integer 'Vulkan.Core10.Enums.Format.Format'
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00231# If either of @srcImage@ or
+--     @dstImage@ was created with a depth\/stencil format, the other
+--     /must/ have exactly the same format
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00232# If @srcImage@ was created with
+--     a depth\/stencil format, @filter@ /must/ be
+--     'Vulkan.Core10.Enums.Filter.FILTER_NEAREST'
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00233# @srcImage@ /must/ have been
+--     created with a @samples@ value of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-00234# @dstImage@ /must/ have been
+--     created with a @samples@ value of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-vkCmdBlitImage-filter-02001# If @filter@ is
+--     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-vkCmdBlitImage-filter-02002# If @filter@ is
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-vkCmdBlitImage-filter-00237# If @filter@ is
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', @srcImage@
+--     /must/ be of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--
+-- -   #VUID-vkCmdBlitImage-srcSubresource-01705# The
+--     @srcSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-vkCmdBlitImage-dstSubresource-01706# The
+--     @dstSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-vkCmdBlitImage-srcSubresource-01707# The
+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-vkCmdBlitImage-dstSubresource-01708# The
+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-02545# @dstImage@ and @srcImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00240# If either @srcImage@ or
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
+--     then for each element of @pRegions@, @srcSubresource.baseArrayLayer@
+--     and @dstSubresource.baseArrayLayer@ /must/ each be @0@, and
+--     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/
+--     each be @1@
+--
+-- -   #VUID-vkCmdBlitImage-aspectMask-00241# For each element of
+--     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
+--     present in @srcImage@
+--
+-- -   #VUID-vkCmdBlitImage-aspectMask-00242# For each element of
+--     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
+--     present in @dstImage@
+--
+-- -   #VUID-vkCmdBlitImage-srcOffset-00243# For each element of
+--     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be
+--     greater than or equal to @0@ and less than or equal to the width of
+--     the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdBlitImage-srcOffset-00244# For each element of
+--     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be
+--     greater than or equal to @0@ and less than or equal to the height of
+--     the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00245# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdBlitImage-srcOffset-00246# For each element of
+--     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be
+--     greater than or equal to @0@ and less than or equal to the depth of
+--     the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-00247# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdBlitImage-dstOffset-00248# For each element of
+--     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be
+--     greater than or equal to @0@ and less than or equal to the width of
+--     the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdBlitImage-dstOffset-00249# For each element of
+--     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be
+--     greater than or equal to @0@ and less than or equal to the height of
+--     the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-00250# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdBlitImage-dstOffset-00251# For each element of
+--     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be
+--     greater than or equal to @0@ and less than or equal to the depth of
+--     the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-00252# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z
+--     /must/ be @1@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBlitImage-commandBuffer-parameter# @commandBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBlitImage-srcImage-parameter# @srcImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdBlitImage-srcImageLayout-parameter# @srcImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-vkCmdBlitImage-dstImage-parameter# @dstImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdBlitImage-dstImageLayout-parameter# @dstImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-vkCmdBlitImage-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'ImageBlit'
+--     structures
+--
+-- -   #VUID-vkCmdBlitImage-filter-parameter# @filter@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Filter.Filter' value
+--
+-- -   #VUID-vkCmdBlitImage-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-vkCmdBlitImage-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBlitImage-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdBlitImage-regionCount-arraylength# @regionCount@ /must/
+--     be greater than @0@
+--
+-- -   #VUID-vkCmdBlitImage-commonparent# Each of @commandBuffer@,
+--     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.Filter.Filter', 'Vulkan.Core10.Handles.Image',
+-- 'ImageBlit', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+cmdBlitImage :: forall io
+              . (MonadIO io)
+             => -- | @commandBuffer@ is the command buffer into which the command will be
+                -- recorded.
+                CommandBuffer
+             -> -- | @srcImage@ is the source image.
+                ("srcImage" ::: Image)
+             -> -- | @srcImageLayout@ is the layout of the source image subresources for the
+                -- blit.
+                ("srcImageLayout" ::: ImageLayout)
+             -> -- | @dstImage@ is the destination image.
+                ("dstImage" ::: Image)
+             -> -- | @dstImageLayout@ is the layout of the destination image subresources for
+                -- the blit.
+                ("dstImageLayout" ::: ImageLayout)
+             -> -- | @pRegions@ is a pointer to an array of 'ImageBlit' structures specifying
+                -- the regions to blit.
+                ("regions" ::: Vector ImageBlit)
+             -> -- | @filter@ is a 'Vulkan.Core10.Enums.Filter.Filter' specifying the filter
+                -- to apply if the blits require scaling.
+                Filter
+             -> io ()
+cmdBlitImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions filter' = liftIO . evalContT $ do
+  let vkCmdBlitImagePtr = pVkCmdBlitImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBlitImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBlitImage is null" Nothing Nothing
+  let vkCmdBlitImage' = mkVkCmdBlitImage vkCmdBlitImagePtr
+  pPRegions <- ContT $ allocaBytes @ImageBlit ((Data.Vector.length (regions)) * 80)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (80 * (i)) :: Ptr ImageBlit) (e)) (regions)
+  lift $ traceAroundEvent "vkCmdBlitImage" (vkCmdBlitImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions) (filter'))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyBufferToImage
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> Image -> ImageLayout -> Word32 -> Ptr BufferImageCopy -> IO ()
+
+-- | vkCmdCopyBufferToImage - Copy data from a buffer into an image
+--
+-- = Description
+--
+-- Each region in @pRegions@ is copied from the specified region of the
+-- source buffer to the specified region of the destination image.
+--
+-- If @dstImage@ has a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+-- regions of each plane to be a target of a copy /must/ be specified
+-- separately using the @pRegions@ member of the 'BufferImageCopy'
+-- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/
+-- be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'. For
+-- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar
+-- image is treated as having the format listed in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes>
+-- for the plane identified by the @aspectMask@ of the corresponding
+-- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'
+-- and to coordinates used in the copy, which correspond to texels in the
+-- /plane/ rather than how these texels map to coordinates in the image as
+-- a whole.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01828# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01829# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-01830# If @commandBuffer@
+--     is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-06217# The image region
+--     specified by each element of @pRegions@ /must/ be contained within
+--     the specified @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-00171# @srcBuffer@ /must/ be
+--     large enough to contain all buffer locations that are accessed
+--     according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
+--     for each element of @pRegions@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-00173# The union of all source
+--     regions, and the union of all destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00174# @srcBuffer@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-01997# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-00176# If @srcBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-00177# @dstImage@ /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-00178# If @dstImage@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-00179# @dstImage@ /must/ have
+--     a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-00180# @dstImageLayout@
+--     /must/ specify the layout of the image subresources of @dstImage@
+--     specified in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-01396# @dstImageLayout@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01701# The
+--     @imageSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageSubresource-01702# The
+--     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageOffset-01793# The @imageOffset@
+--     and @imageExtent@ members of each element of @pRegions@ /must/
+--     respect the image transfer granularity requirements of
+--     @commandBuffer@’s command pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-02543# @dstImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04477# If the queue
+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
+--     @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each
+--     element of @pRegions@, the @aspectMask@ member of @imageSubresource@
+--     /must/ not be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-06218# For each element of
+--     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ +
+--     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the width of the specified @imageSubresource@
+--     of @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-06219# For each element of
+--     @pRegions@, @imageOffset.y@ and (@imageExtent.height@ +
+--     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the height of the specified @imageSubresource@
+--     of @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-bufferOffset-01558# If @dstImage@ does
+--     not have either a depth\/stencil or a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the format’s texel block size
+--
+-- -   #VUID-vkCmdCopyBufferToImage-bufferOffset-01559# If @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the element size of the compatible format for the format
+--     and the @aspectMask@ of the @imageSubresource@ as defined in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
+--
+-- -   #VUID-vkCmdCopyBufferToImage-srcImage-00199# If @dstImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
+--     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
+--     @imageExtent.height@ /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00200# For each element of
+--     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
+--     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the depth of the specified @imageSubresource@
+--     of @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-srcImage-00201# If @dstImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-bufferRowLength-00203# If @dstImage@ is
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ /must/ be a
+--     multiple of the compressed texel block width
+--
+-- -   #VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204# If @dstImage@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
+--     multiple of the compressed texel block height
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageOffset-00205# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, all members of @imageOffset@ /must/
+--     be a multiple of the corresponding dimensions of the compressed
+--     texel block
+--
+-- -   #VUID-vkCmdCopyBufferToImage-bufferOffset-00206# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
+--     of the compressed texel block size in bytes
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00207# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@imageExtent.width@
+--     + @imageOffset.x@) /must/ equal the width of the specified
+--     @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00208# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.height@ /must/ be a
+--     multiple of the compressed texel block height or
+--     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
+--     the specified @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-imageExtent-00209# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@imageExtent.depth@
+--     + @imageOffset.z@) /must/ equal the depth of the specified
+--     @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-aspectMask-00211# For each element of
+--     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
+--     present in @dstImage@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-aspectMask-01560# If @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @imageSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     (with
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     valid only for image formats with three planes)
+--
+-- -   #VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213# If @dstImage@ is
+--     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
+--     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be
+--     @0@ and @imageSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-04725# If @dstImage@ is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ multiplied by the
+--     texel block size of @dstImage@ /must/ be less than or equal to 231-1
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-04726# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ divided by the
+--     compressed texel block width and then multiplied by the texel block
+--     size of @dstImage@ /must/ be less than or equal to 231-1
+--
+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-04052# If the queue
+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
+--     @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-srcImage-04053# If @dstImage@ has a
+--     depth\/stencil format, the @bufferOffset@ member of any element of
+--     @pRegions@ /must/ be a multiple of @4@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyBufferToImage-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyBufferToImage-srcBuffer-parameter# @srcBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImage-parameter# @dstImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter#
+--     @dstImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-vkCmdCopyBufferToImage-pRegions-parameter# @pRegions@ /must/
+--     be a valid pointer to an array of @regionCount@ valid
+--     'BufferImageCopy' structures
+--
+-- -   #VUID-vkCmdCopyBufferToImage-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-vkCmdCopyBufferToImage-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyBufferToImage-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyBufferToImage-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdCopyBufferToImage-commonparent# Each of @commandBuffer@,
+--     @dstImage@, and @srcBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+cmdCopyBufferToImage :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @srcBuffer@ is the source buffer.
+                        ("srcBuffer" ::: Buffer)
+                     -> -- | @dstImage@ is the destination image.
+                        ("dstImage" ::: Image)
+                     -> -- | @dstImageLayout@ is the layout of the destination image subresources for
+                        -- the copy.
+                        ("dstImageLayout" ::: ImageLayout)
+                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures
+                        -- specifying the regions to copy.
+                        ("regions" ::: Vector BufferImageCopy)
+                     -> io ()
+cmdCopyBufferToImage commandBuffer srcBuffer dstImage dstImageLayout regions = liftIO . evalContT $ do
+  let vkCmdCopyBufferToImagePtr = pVkCmdCopyBufferToImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyBufferToImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBufferToImage is null" Nothing Nothing
+  let vkCmdCopyBufferToImage' = mkVkCmdCopyBufferToImage vkCmdCopyBufferToImagePtr
+  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)
+  lift $ traceAroundEvent "vkCmdCopyBufferToImage" (vkCmdCopyBufferToImage' (commandBufferHandle (commandBuffer)) (srcBuffer) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyImageToBuffer
+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Buffer -> Word32 -> Ptr BufferImageCopy -> IO ()
+
+-- | vkCmdCopyImageToBuffer - Copy image data into a buffer
+--
+-- = Description
+--
+-- Each region in @pRegions@ is copied from the specified region of the
+-- source image to the specified region of the destination buffer.
+--
+-- If @srcImage@ has a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+-- regions of each plane to be a source of a copy /must/ be specified
+-- separately using the @pRegions@ member of the 'BufferImageCopy'
+-- structure. In this case, the @aspectMask@ of @imageSubresource@ /must/
+-- be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'. For
+-- the purposes of 'cmdCopyBufferToImage', each plane of a multi-planar
+-- image is treated as having the format listed in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes>
+-- for the plane identified by the @aspectMask@ of the corresponding
+-- subresource. This applies both to 'Vulkan.Core10.Enums.Format.Format'
+-- and to coordinates used in the copy, which correspond to texels in the
+-- /plane/ rather than how these texels map to coordinates in the image as
+-- a whole.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01831# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01832# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-01833# If @commandBuffer@
+--     is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06220# The image region
+--     specified by each element of @pRegions@ /must/ be contained within
+--     the specified @imageSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-00183# @dstBuffer@ /must/ be
+--     large enough to contain all buffer locations that are accessed
+--     according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
+--     for each element of @pRegions@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-00184# The union of all source
+--     regions, and the union of all destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00186# @srcImage@ /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-01998# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00187# If @srcImage@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00191# @dstBuffer@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-00192# If @dstBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00188# @srcImage@ /must/ have
+--     a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189# @srcImageLayout@
+--     /must/ specify the layout of the image subresources of @srcImage@
+--     specified in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397# @srcImageLayout@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01703# The
+--     @imageSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageSubresource-01704# The
+--     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-01794# The @imageOffset@
+--     and @imageExtent@ members of each element of @pRegions@ /must/
+--     respect the image transfer granularity requirements of
+--     @commandBuffer@’s command pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-02544# @srcImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06221# For each element of
+--     @pRegions@, @imageOffset.x@ and (@imageExtent.width@ +
+--     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the width of the specified @imageSubresource@
+--     of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-06222# For each element of
+--     @pRegions@, @imageOffset.y@ and (imageExtent.height +
+--     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the height of the specified @imageSubresource@
+--     of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-01558# If @srcImage@ does
+--     not have either a depth\/stencil or a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the format’s texel block size
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-01559# If @srcImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the element size of the compatible format for the format
+--     and the @aspectMask@ of the @imageSubresource@ as defined in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00199# If @srcImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
+--     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
+--     @imageExtent.height@ /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00200# For each element of
+--     @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
+--     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the depth of the specified @imageSubresource@
+--     of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-00201# If @srcImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203# If @srcImage@ is
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ /must/ be a
+--     multiple of the compressed texel block width
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204# If @srcImage@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
+--     multiple of the compressed texel block height
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageOffset-00205# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, all members of @imageOffset@ /must/
+--     be a multiple of the corresponding dimensions of the compressed
+--     texel block
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-bufferOffset-00206# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
+--     of the compressed texel block size in bytes
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00207# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@imageExtent.width@
+--     + @imageOffset.x@) /must/ equal the width of the specified
+--     @imageSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00208# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.height@ /must/ be a
+--     multiple of the compressed texel block height or
+--     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
+--     the specified @imageSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-imageExtent-00209# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@imageExtent.depth@
+--     + @imageOffset.z@) /must/ equal the depth of the specified
+--     @imageSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-aspectMask-00211# For each element of
+--     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
+--     present in @srcImage@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-aspectMask-01560# If @srcImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @imageSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     (with
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     valid only for image formats with three planes)
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213# If @srcImage@ is
+--     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
+--     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be
+--     @0@ and @imageSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-04725# If @srcImage@ is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ multiplied by the
+--     texel block size of @srcImage@ /must/ be less than or equal to 231-1
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-04726# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ divided by the
+--     compressed texel block width and then multiplied by the texel block
+--     size of @srcImage@ /must/ be less than or equal to 231-1
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-04052# If the queue
+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
+--     @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-04053# If @srcImage@ has a
+--     depth\/stencil format, the @bufferOffset@ member of any element of
+--     @pRegions@ /must/ be a multiple of @4@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImage-parameter# @srcImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter#
+--     @srcImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter# @dstBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-pRegions-parameter# @pRegions@ /must/
+--     be a valid pointer to an array of @regionCount@ valid
+--     'BufferImageCopy' structures
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-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-vkCmdCopyImageToBuffer-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdCopyImageToBuffer-commonparent# Each of @commandBuffer@,
+--     @dstBuffer@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy',
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+cmdCopyImageToBuffer :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @srcImage@ is the source image.
+                        ("srcImage" ::: Image)
+                     -> -- | @srcImageLayout@ is the layout of the source image subresources for the
+                        -- copy.
+                        ("srcImageLayout" ::: ImageLayout)
+                     -> -- | @dstBuffer@ is the destination buffer.
+                        ("dstBuffer" ::: Buffer)
+                     -> -- | @pRegions@ is a pointer to an array of 'BufferImageCopy' structures
+                        -- specifying the regions to copy.
+                        ("regions" ::: Vector BufferImageCopy)
+                     -> io ()
+cmdCopyImageToBuffer commandBuffer srcImage srcImageLayout dstBuffer regions = liftIO . evalContT $ do
+  let vkCmdCopyImageToBufferPtr = pVkCmdCopyImageToBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyImageToBufferPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImageToBuffer is null" Nothing Nothing
+  let vkCmdCopyImageToBuffer' = mkVkCmdCopyImageToBuffer vkCmdCopyImageToBufferPtr
+  pPRegions <- ContT $ allocaBytes @BufferImageCopy ((Data.Vector.length (regions)) * 56)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (56 * (i)) :: Ptr BufferImageCopy) (e)) (regions)
+  lift $ traceAroundEvent "vkCmdCopyImageToBuffer" (vkCmdCopyImageToBuffer' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstBuffer) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdUpdateBuffer
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Ptr () -> IO ()
+
+-- | vkCmdUpdateBuffer - Update a buffer’s contents from host memory
+--
+-- = Description
+--
+-- @dataSize@ /must/ be less than or equal to 65536 bytes. For larger
+-- updates, applications /can/ use buffer to buffer
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers copies>.
+--
+-- Note
+--
+-- Buffer updates performed with 'cmdUpdateBuffer' first copy the data into
+-- command buffer memory when the command is recorded (which requires
+-- additional storage and may incur an additional allocation), and then
+-- copy the data from the command buffer into @dstBuffer@ when the command
+-- is executed on a device.
+--
+-- The additional cost of this functionality compared to
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers buffer to buffer copies>
+-- means it is only recommended for very small amounts of data, and is why
+-- it is limited to only 65536 bytes.
+--
+-- Applications /can/ work around this by issuing multiple
+-- 'cmdUpdateBuffer' commands to different ranges of the same buffer, but
+-- it is strongly recommended that they /should/ not.
+--
+-- The source data is copied from the user pointer to the command buffer
+-- when the command is called.
+--
+-- 'cmdUpdateBuffer' is only allowed outside of a render pass. This command
+-- is treated as “transfer” operation, for the purposes of synchronization
+-- barriers. The
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+-- /must/ be specified in @usage@ of
+-- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be
+-- compatible with 'cmdUpdateBuffer'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdUpdateBuffer-dstOffset-00032# @dstOffset@ /must/ be less
+--     than the size of @dstBuffer@
+--
+-- -   #VUID-vkCmdUpdateBuffer-dataSize-00033# @dataSize@ /must/ be less
+--     than or equal to the size of @dstBuffer@ minus @dstOffset@
+--
+-- -   #VUID-vkCmdUpdateBuffer-dstBuffer-00034# @dstBuffer@ /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdUpdateBuffer-dstBuffer-00035# If @dstBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdUpdateBuffer-dstOffset-00036# @dstOffset@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdUpdateBuffer-dataSize-00037# @dataSize@ /must/ be less
+--     than or equal to @65536@
+--
+-- -   #VUID-vkCmdUpdateBuffer-dataSize-00038# @dataSize@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdUpdateBuffer-commandBuffer-01813# If @commandBuffer@ is
+--     an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdUpdateBuffer-commandBuffer-01814# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdUpdateBuffer-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdUpdateBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdUpdateBuffer-pData-parameter# @pData@ /must/ be a valid
+--     pointer to an array of @dataSize@ bytes
+--
+-- -   #VUID-vkCmdUpdateBuffer-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-vkCmdUpdateBuffer-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdUpdateBuffer-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdUpdateBuffer-dataSize-arraylength# @dataSize@ /must/ be
+--     greater than @0@
+--
+-- -   #VUID-vkCmdUpdateBuffer-commonparent# Both of @commandBuffer@, and
+--     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdUpdateBuffer :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command will be
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @dstBuffer@ is a handle to the buffer to be updated.
+                   ("dstBuffer" ::: Buffer)
+                -> -- | @dstOffset@ is the byte offset into the buffer to start updating, and
+                   -- /must/ be a multiple of 4.
+                   ("dstOffset" ::: DeviceSize)
+                -> -- | @dataSize@ is the number of bytes to update, and /must/ be a multiple of
+                   -- 4.
+                   ("dataSize" ::: DeviceSize)
+                -> -- | @pData@ is a pointer to the source data for the buffer update, and
+                   -- /must/ be at least @dataSize@ bytes in size.
+                   ("data" ::: Ptr ())
+                -> io ()
+cmdUpdateBuffer commandBuffer dstBuffer dstOffset dataSize data' = liftIO $ do
+  let vkCmdUpdateBufferPtr = pVkCmdUpdateBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdUpdateBufferPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdUpdateBuffer is null" Nothing Nothing
+  let vkCmdUpdateBuffer' = mkVkCmdUpdateBuffer vkCmdUpdateBufferPtr
+  traceAroundEvent "vkCmdUpdateBuffer" (vkCmdUpdateBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (dataSize) (data'))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdFillBuffer
+  :: FunPtr (Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> Buffer -> DeviceSize -> DeviceSize -> Word32 -> IO ()
+
+-- | vkCmdFillBuffer - Fill a region of a buffer with a fixed value
+--
+-- = Description
+--
+-- 'cmdFillBuffer' is treated as “transfer” operation for the purposes of
+-- synchronization barriers. The
+-- 'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+-- /must/ be specified in @usage@ of
+-- 'Vulkan.Core10.Buffer.BufferCreateInfo' in order for the buffer to be
+-- compatible with 'cmdFillBuffer'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdFillBuffer-dstOffset-00024# @dstOffset@ /must/ be less
+--     than the size of @dstBuffer@
+--
+-- -   #VUID-vkCmdFillBuffer-dstOffset-00025# @dstOffset@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-vkCmdFillBuffer-size-00026# If @size@ is not equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater
+--     than @0@
+--
+-- -   #VUID-vkCmdFillBuffer-size-00027# If @size@ is not equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less than
+--     or equal to the size of @dstBuffer@ minus @dstOffset@
+--
+-- -   #VUID-vkCmdFillBuffer-size-00028# If @size@ is not equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be a multiple
+--     of @4@
+--
+-- -   #VUID-vkCmdFillBuffer-dstBuffer-00029# @dstBuffer@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdFillBuffer-dstBuffer-00031# If @dstBuffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdFillBuffer-commandBuffer-01811# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdFillBuffer-commandBuffer-01812# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdFillBuffer-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdFillBuffer-dstBuffer-parameter# @dstBuffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdFillBuffer-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-vkCmdFillBuffer-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics or compute
+--     operations
+--
+-- -   #VUID-vkCmdFillBuffer-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdFillBuffer-commonparent# Both of @commandBuffer@, and
+--     @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdFillBuffer :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which the command will be
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @dstBuffer@ is the buffer to be filled.
+                 ("dstBuffer" ::: Buffer)
+              -> -- | @dstOffset@ is the byte offset into the buffer at which to start
+                 -- filling, and /must/ be a multiple of 4.
+                 ("dstOffset" ::: DeviceSize)
+              -> -- | @size@ is the number of bytes to fill, and /must/ be either a multiple
+                 -- of 4, or 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to fill the range from
+                 -- @offset@ to the end of the buffer. If
+                 -- 'Vulkan.Core10.APIConstants.WHOLE_SIZE' is used and the remaining size
+                 -- of the buffer is not a multiple of 4, then the nearest smaller multiple
+                 -- is used.
+                 DeviceSize
+              -> -- | @data@ is the 4-byte word written repeatedly to the buffer to fill
+                 -- @size@ bytes of data. The data word is written to memory according to
+                 -- the host endianness.
+                 ("data" ::: Word32)
+              -> io ()
+cmdFillBuffer commandBuffer dstBuffer dstOffset size data' = liftIO $ do
+  let vkCmdFillBufferPtr = pVkCmdFillBuffer (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdFillBufferPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdFillBuffer is null" Nothing Nothing
+  let vkCmdFillBuffer' = mkVkCmdFillBuffer vkCmdFillBufferPtr
+  traceAroundEvent "vkCmdFillBuffer" (vkCmdFillBuffer' (commandBufferHandle (commandBuffer)) (dstBuffer) (dstOffset) (size) (data'))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdClearColorImage
+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearColorValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()
+
+-- | vkCmdClearColorImage - Clear regions of a color image
+--
+-- = Description
+--
+-- Each specified range in @pRanges@ is cleared to the value specified by
+-- @pColor@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdClearColorImage-image-01993# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @image@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-vkCmdClearColorImage-image-00002# @image@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdClearColorImage-image-01545# @image@ /must/ not use any
+--     of the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>
+--
+-- -   #VUID-vkCmdClearColorImage-image-00003# If @image@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdClearColorImage-imageLayout-00004# @imageLayout@ /must/
+--     specify the layout of the image subresource ranges of @image@
+--     specified in @pRanges@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdClearColorImage-imageLayout-01394# @imageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-vkCmdClearColorImage-aspectMask-02498# The
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@
+--     members of the elements of the @pRanges@ array /must/ each only
+--     include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-vkCmdClearColorImage-baseMipLevel-01470# The
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@
+--     members of the elements of the @pRanges@ array /must/ each be less
+--     than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-vkCmdClearColorImage-pRanges-01692# For each
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @levelCount@ member is not
+--     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then
+--     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@
+--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
+--     created
+--
+-- -   #VUID-vkCmdClearColorImage-baseArrayLayer-01472# The
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@
+--     members of the elements of the @pRanges@ array /must/ each be less
+--     than the @arrayLayers@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-vkCmdClearColorImage-pRanges-01693# For each
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @layerCount@ member is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then
+--     @baseArrayLayer@ + @layerCount@ /must/ be less than the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @image@ was created
+--
+-- -   #VUID-vkCmdClearColorImage-image-00007# @image@ /must/ not have a
+--     compressed or depth\/stencil format
+--
+-- -   #VUID-vkCmdClearColorImage-pColor-04961# @pColor@ /must/ be a valid
+--     pointer to a 'ClearColorValue' union
+--
+-- -   #VUID-vkCmdClearColorImage-commandBuffer-01805# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @image@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdClearColorImage-commandBuffer-01806# If @commandBuffer@
+--     is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, /must/ not be an unprotected image
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdClearColorImage-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdClearColorImage-image-parameter# @image@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdClearColorImage-imageLayout-parameter# @imageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-vkCmdClearColorImage-pRanges-parameter# @pRanges@ /must/ be a
+--     valid pointer to an array of @rangeCount@ valid
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures
+--
+-- -   #VUID-vkCmdClearColorImage-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-vkCmdClearColorImage-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdClearColorImage-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdClearColorImage-rangeCount-arraylength# @rangeCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdClearColorImage-commonparent# Both of @commandBuffer@,
+--     and @image@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ClearColorValue', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange'
+cmdClearColorImage :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command will be
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @image@ is the image to be cleared.
+                      Image
+                   -> -- | @imageLayout@ specifies the current layout of the image subresource
+                      -- ranges to be cleared, and /must/ be
+                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
+                      -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.
+                      ImageLayout
+                   -> -- | @pColor@ is a pointer to a 'ClearColorValue' structure containing the
+                      -- values that the image subresource ranges will be cleared to (see
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears-values>
+                      -- below).
+                      ClearColorValue
+                   -> -- | @pRanges@ is a pointer to an array of
+                      -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a
+                      -- range of mipmap levels, array layers, and aspects to be cleared, as
+                      -- described in
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views Image Views>.
+                      ("ranges" ::: Vector ImageSubresourceRange)
+                   -> io ()
+cmdClearColorImage commandBuffer image imageLayout color ranges = liftIO . evalContT $ do
+  let vkCmdClearColorImagePtr = pVkCmdClearColorImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdClearColorImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearColorImage is null" Nothing Nothing
+  let vkCmdClearColorImage' = mkVkCmdClearColorImage vkCmdClearColorImagePtr
+  pColor <- ContT $ withCStruct (color)
+  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)
+  lift $ traceAroundEvent "vkCmdClearColorImage" (vkCmdClearColorImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pColor ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdClearDepthStencilImage
+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Ptr ClearDepthStencilValue -> Word32 -> Ptr ImageSubresourceRange -> IO ()
+
+-- | vkCmdClearDepthStencilImage - Fill regions of a combined depth\/stencil
+-- image
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-image-01994# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @image@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02658# If the @aspect@
+--     member of any element of @pRanges@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     and @image@ was created with
+--     <VkImageStencilUsageCreateInfo.html separate stencil usage>,
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     /must/ have been included in the
+--     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'::@stencilUsage@
+--     used to create @image@
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02659# If the @aspect@
+--     member of any element of @pRanges@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     and @image@ was not created with
+--     <VkImageStencilUsageCreateInfo.html separate stencil usage>,
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     /must/ have been included in the
+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create
+--     @image@
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-02660# If the @aspect@
+--     member of any element of @pRanges@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     /must/ have been included in the
+--     'Vulkan.Core10.Image.ImageCreateInfo'::@usage@ used to create
+--     @image@
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-image-00010# If @image@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00011# @imageLayout@
+--     /must/ specify the layout of the image subresource ranges of @image@
+--     specified in @pRanges@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-00012# @imageLayout@
+--     /must/ be either of
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-aspectMask-02824# The
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
+--     of each element of the @pRanges@ array /must/ not include bits other
+--     than
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-image-02825# If the @image@’s
+--     format does not have a stencil component, then the
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
+--     of each element of the @pRanges@ array /must/ not include the
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--     bit
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-image-02826# If the @image@’s
+--     format does not have a depth component, then the
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@aspectMask@ member
+--     of each element of the @pRanges@ array /must/ not include the
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' bit
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474# The
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseMipLevel@
+--     members of the elements of the @pRanges@ array /must/ each be less
+--     than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-01694# For each
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @levelCount@ member is not
+--     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS', then
+--     @baseMipLevel@ + @levelCount@ /must/ be less than the @mipLevels@
+--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
+--     created
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476# The
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange'::@baseArrayLayer@
+--     members of the elements of the @pRanges@ array /must/ each be less
+--     than the @arrayLayers@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-01695# For each
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' element of
+--     @pRanges@, if the @layerCount@ member is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS', then
+--     @baseArrayLayer@ + @layerCount@ /must/ be less than the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @image@ was created
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-image-00014# @image@ /must/ have a
+--     depth\/stencil format
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01807# If
+--     @commandBuffer@ is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @image@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-01808# If
+--     @commandBuffer@ is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @image@ /must/ not be an unprotected image
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-image-parameter# @image@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-imageLayout-parameter#
+--     @imageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter#
+--     @pDepthStencil@ /must/ be a valid pointer to a valid
+--     'ClearDepthStencilValue' structure
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-pRanges-parameter# @pRanges@
+--     /must/ be a valid pointer to an array of @rangeCount@ valid
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' structures
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-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-vkCmdClearDepthStencilImage-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-renderpass# This command /must/
+--     only be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength#
+--     @rangeCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdClearDepthStencilImage-commonparent# Both of
+--     @commandBuffer@, and @image@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ClearDepthStencilValue', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange'
+cmdClearDepthStencilImage :: forall io
+                           . (MonadIO io)
+                          => -- | @commandBuffer@ is the command buffer into which the command will be
+                             -- recorded.
+                             CommandBuffer
+                          -> -- | @image@ is the image to be cleared.
+                             Image
+                          -> -- | @imageLayout@ specifies the current layout of the image subresource
+                             -- ranges to be cleared, and /must/ be
+                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
+                             -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'.
+                             ImageLayout
+                          -> -- | @pDepthStencil@ is a pointer to a 'ClearDepthStencilValue' structure
+                             -- containing the values that the depth and stencil image subresource
+                             -- ranges will be cleared to (see
+                             -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears-values>
+                             -- below).
+                             ClearDepthStencilValue
+                          -> -- | @pRanges@ is a pointer to an array of
+                             -- 'Vulkan.Core10.ImageView.ImageSubresourceRange' structures describing a
+                             -- range of mipmap levels, array layers, and aspects to be cleared, as
+                             -- described in
+                             -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views Image Views>.
+                             ("ranges" ::: Vector ImageSubresourceRange)
+                          -> io ()
+cmdClearDepthStencilImage commandBuffer image imageLayout depthStencil ranges = liftIO . evalContT $ do
+  let vkCmdClearDepthStencilImagePtr = pVkCmdClearDepthStencilImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdClearDepthStencilImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearDepthStencilImage is null" Nothing Nothing
+  let vkCmdClearDepthStencilImage' = mkVkCmdClearDepthStencilImage vkCmdClearDepthStencilImagePtr
+  pDepthStencil <- ContT $ withCStruct (depthStencil)
+  pPRanges <- ContT $ allocaBytes @ImageSubresourceRange ((Data.Vector.length (ranges)) * 20)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRanges `plusPtr` (20 * (i)) :: Ptr ImageSubresourceRange) (e)) (ranges)
+  lift $ traceAroundEvent "vkCmdClearDepthStencilImage" (vkCmdClearDepthStencilImage' (commandBufferHandle (commandBuffer)) (image) (imageLayout) pDepthStencil ((fromIntegral (Data.Vector.length $ (ranges)) :: Word32)) (pPRanges))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdClearAttachments
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr ClearAttachment -> Word32 -> Ptr ClearRect -> IO ()
+
+-- | vkCmdClearAttachments - Clear regions within bound framebuffer
+-- attachments
+--
+-- = Description
+--
+-- If the render pass has a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>,
+-- clears follow the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops operations of fragment density maps>
+-- as if each clear region was a primitive which generates fragments. The
+-- clear color is applied to all pixels inside each fragment’s area
+-- regardless if the pixels lie outside of the clear region. Clears /may/
+-- have a different set of supported fragment areas than draws.
+--
+-- Unlike other
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>,
+-- 'cmdClearAttachments' executes as a drawing command, rather than a
+-- transfer command, with writes performed by it executing in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-order rasterization order>.
+-- Clears to color attachments are executed as color attachment writes, by
+-- the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- stage. Clears to depth\/stencil attachments are executed as
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth writes>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil writes>
+-- by the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
+-- and
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
+-- stages.
+--
+-- 'cmdClearAttachments' is not affected by the bound pipeline state.
+--
+-- Note
+--
+-- It is generally preferable to clear attachments by using the
+-- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' load
+-- operation at the start of rendering, as it is more efficient on some
+-- implementations.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdClearAttachments-aspectMask-02501# If the @aspectMask@
+--     member of any element of @pAttachments@ contains
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
+--     then the @colorAttachment@ member of that element /must/ either
+--     refer to a color attachment which is
+--     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ be a valid
+--     color attachment
+--
+-- -   #VUID-vkCmdClearAttachments-aspectMask-02502# If the @aspectMask@
+--     member of any element of @pAttachments@ contains
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT',
+--     then the current subpass\' depth\/stencil attachment /must/ either
+--     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a
+--     depth component
+--
+-- -   #VUID-vkCmdClearAttachments-aspectMask-02503# If the @aspectMask@
+--     member of any element of @pAttachments@ contains
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT',
+--     then the current subpass\' depth\/stencil attachment /must/ either
+--     be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or /must/ have a
+--     stencil component
+--
+-- -   #VUID-vkCmdClearAttachments-rect-02682# The @rect@ member of each
+--     element of @pRects@ /must/ have an @extent.width@ greater than @0@
+--
+-- -   #VUID-vkCmdClearAttachments-rect-02683# The @rect@ member of each
+--     element of @pRects@ /must/ have an @extent.height@ greater than @0@
+--
+-- -   #VUID-vkCmdClearAttachments-pRects-00016# The rectangular region
+--     specified by each element of @pRects@ /must/ be contained within the
+--     render area of the current render pass instance
+--
+-- -   #VUID-vkCmdClearAttachments-pRects-00017# The layers specified by
+--     each element of @pRects@ /must/ be contained within every attachment
+--     that @pAttachments@ refers to
+--
+-- -   #VUID-vkCmdClearAttachments-layerCount-01934# The @layerCount@
+--     member of each element of @pRects@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdClearAttachments-commandBuffer-02504# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, each attachment to be cleared /must/ not be a
+--     protected image
+--
+-- -   #VUID-vkCmdClearAttachments-commandBuffer-02505# If @commandBuffer@
+--     is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, each attachment to be cleared /must/ not be an
+--     unprotected image
+--
+-- -   #VUID-vkCmdClearAttachments-baseArrayLayer-00018# If the render pass
+--     instance this is recorded in uses multiview, then @baseArrayLayer@
+--     /must/ be zero and @layerCount@ /must/ be one
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdClearAttachments-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdClearAttachments-pAttachments-parameter# @pAttachments@
+--     /must/ be a valid pointer to an array of @attachmentCount@ valid
+--     'ClearAttachment' structures
+--
+-- -   #VUID-vkCmdClearAttachments-pRects-parameter# @pRects@ /must/ be a
+--     valid pointer to an array of @rectCount@ 'ClearRect' structures
+--
+-- -   #VUID-vkCmdClearAttachments-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-vkCmdClearAttachments-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdClearAttachments-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdClearAttachments-attachmentCount-arraylength#
+--     @attachmentCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdClearAttachments-rectCount-arraylength# @rectCount@
+--     /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ClearAttachment', 'ClearRect', 'Vulkan.Core10.Handles.CommandBuffer'
+cmdClearAttachments :: forall io
+                     . (MonadIO io)
+                    => -- | @commandBuffer@ is the command buffer into which the command will be
+                       -- recorded.
+                       CommandBuffer
+                    -> -- | @pAttachments@ is a pointer to an array of 'ClearAttachment' structures
+                       -- defining the attachments to clear and the clear values to use. If any
+                       -- attachment index to be cleared is not backed by an image view, then the
+                       -- clear has no effect.
+                       ("attachments" ::: Vector ClearAttachment)
+                    -> -- | @pRects@ is a pointer to an array of 'ClearRect' structures defining
+                       -- regions within each selected attachment to clear.
+                       ("rects" ::: Vector ClearRect)
+                    -> io ()
+cmdClearAttachments commandBuffer attachments rects = liftIO . evalContT $ do
+  let vkCmdClearAttachmentsPtr = pVkCmdClearAttachments (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdClearAttachmentsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdClearAttachments is null" Nothing Nothing
+  let vkCmdClearAttachments' = mkVkCmdClearAttachments vkCmdClearAttachmentsPtr
+  pPAttachments <- ContT $ allocaBytes @ClearAttachment ((Data.Vector.length (attachments)) * 24)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPAttachments `plusPtr` (24 * (i)) :: Ptr ClearAttachment) (e) . ($ ())) (attachments)
+  pPRects <- ContT $ allocaBytes @ClearRect ((Data.Vector.length (rects)) * 24)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRects `plusPtr` (24 * (i)) :: Ptr ClearRect) (e)) (rects)
+  lift $ traceAroundEvent "vkCmdClearAttachments" (vkCmdClearAttachments' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (attachments)) :: Word32)) (pPAttachments) ((fromIntegral (Data.Vector.length $ (rects)) :: Word32)) (pPRects))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResolveImage
+  :: FunPtr (Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()) -> Ptr CommandBuffer_T -> Image -> ImageLayout -> Image -> ImageLayout -> Word32 -> Ptr ImageResolve -> IO ()
+
+-- | vkCmdResolveImage - Resolve regions of an image
+--
+-- = Description
+--
+-- During the resolve the samples corresponding to each pixel location in
+-- the source are converted to a single sample before being written to the
+-- destination. If the source formats are floating-point or normalized
+-- types, the sample values for each pixel are resolved in an
+-- implementation-dependent manner. If the source formats are integer
+-- types, a single sample’s value is selected for each pixel.
+--
+-- @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
+-- in texels of the sub-regions of the source and destination image data.
+-- @extent@ is the size in texels of the source image to resolve in
+-- @width@, @height@ and @depth@. Each element of @pRegions@ /must/ be a
+-- region that is contained within its corresponding image.
+--
+-- Resolves are done layer by layer starting with @baseArrayLayer@ member
+-- of @srcSubresource@ for the source and @dstSubresource@ for the
+-- destination. @layerCount@ layers are resolved to the destination image.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdResolveImage-commandBuffer-01837# If @commandBuffer@ is
+--     an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdResolveImage-commandBuffer-01838# If @commandBuffer@ is
+--     an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdResolveImage-commandBuffer-01839# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- -   #VUID-vkCmdResolveImage-pRegions-00255# The union of all source
+--     regions, and the union of all destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-00256# If @srcImage@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-00257# @srcImage@ /must/ have a
+--     sample count equal to any valid sample count value other than
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-vkCmdResolveImage-dstImage-00258# If @dstImage@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdResolveImage-dstImage-00259# @dstImage@ /must/ have a
+--     sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-vkCmdResolveImage-srcImageLayout-00260# @srcImageLayout@
+--     /must/ specify the layout of the image subresources of @srcImage@
+--     specified in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdResolveImage-srcImageLayout-01400# @srcImageLayout@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-vkCmdResolveImage-dstImageLayout-00262# @dstImageLayout@
+--     /must/ specify the layout of the image subresources of @dstImage@
+--     specified in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-vkCmdResolveImage-dstImageLayout-01401# @dstImageLayout@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-vkCmdResolveImage-dstImage-02003# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
+--
+-- -   #VUID-vkCmdResolveImage-linearColorAttachment-06519# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     feature is enabled and the image is created with
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-01386# @srcImage@ and @dstImage@
+--     /must/ have been created with the same image format
+--
+-- -   #VUID-vkCmdResolveImage-srcSubresource-01709# The
+--     @srcSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-vkCmdResolveImage-dstSubresource-01710# The
+--     @dstSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-vkCmdResolveImage-srcSubresource-01711# The
+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-vkCmdResolveImage-dstSubresource-01712# The
+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-vkCmdResolveImage-dstImage-02546# @dstImage@ and @srcImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-04446# If either @srcImage@ or
+--     @dstImage@ are of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @srcSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-04447# If either @srcImage@ or
+--     @dstImage@ are of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @dstSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdResolveImage-srcOffset-00269# For each element of
+--     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdResolveImage-srcOffset-00270# For each element of
+--     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-00271# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdResolveImage-srcOffset-00272# For each element of
+--     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-00273# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- -   #VUID-vkCmdResolveImage-dstOffset-00274# For each element of
+--     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdResolveImage-dstOffset-00275# For each element of
+--     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdResolveImage-dstImage-00276# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-vkCmdResolveImage-dstOffset-00277# For each element of
+--     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-vkCmdResolveImage-dstImage-00278# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdResolveImage-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdResolveImage-srcImage-parameter# @srcImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdResolveImage-srcImageLayout-parameter# @srcImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-vkCmdResolveImage-dstImage-parameter# @dstImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-vkCmdResolveImage-dstImageLayout-parameter# @dstImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-vkCmdResolveImage-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'ImageResolve'
+--     structures
+--
+-- -   #VUID-vkCmdResolveImage-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-vkCmdResolveImage-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdResolveImage-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdResolveImage-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdResolveImage-commonparent# Each of @commandBuffer@,
+--     @dstImage@, and @srcImage@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageResolve'
+cmdResolveImage :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command will be
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @srcImage@ is the source image.
+                   ("srcImage" ::: Image)
+                -> -- | @srcImageLayout@ is the layout of the source image subresources for the
+                   -- resolve.
+                   ("srcImageLayout" ::: ImageLayout)
+                -> -- | @dstImage@ is the destination image.
+                   ("dstImage" ::: Image)
+                -> -- | @dstImageLayout@ is the layout of the destination image subresources for
+                   -- the resolve.
+                   ("dstImageLayout" ::: ImageLayout)
+                -> -- | @pRegions@ is a pointer to an array of 'ImageResolve' structures
+                   -- specifying the regions to resolve.
+                   ("regions" ::: Vector ImageResolve)
+                -> io ()
+cmdResolveImage commandBuffer srcImage srcImageLayout dstImage dstImageLayout regions = liftIO . evalContT $ do
+  let vkCmdResolveImagePtr = pVkCmdResolveImage (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdResolveImagePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResolveImage is null" Nothing Nothing
+  let vkCmdResolveImage' = mkVkCmdResolveImage vkCmdResolveImagePtr
+  pPRegions <- ContT $ allocaBytes @ImageResolve ((Data.Vector.length (regions)) * 68)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions `plusPtr` (68 * (i)) :: Ptr ImageResolve) (e)) (regions)
+  lift $ traceAroundEvent "vkCmdResolveImage" (vkCmdResolveImage' (commandBufferHandle (commandBuffer)) (srcImage) (srcImageLayout) (dstImage) (dstImageLayout) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32)) (pPRegions))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetEvent
+  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()
+
+-- | vkCmdSetEvent - Set an event object to signaled state
+--
+-- = Description
+--
+-- 'cmdSetEvent' behaves identically to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2',
+-- except that it does not define an access scope, and /must/ only be used
+-- with 'cmdWaitEvents', not
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04090# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04091# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04092# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04093# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04094# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04095# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04096# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-04097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-03937# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @stageMask@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-06457# Any pipeline stage included in
+--     @stageMask@ /must/ be supported by the capabilities of the queue
+--     family specified by the @queueFamilyIndex@ member of the
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was
+--     used to create the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-01149# @stageMask@ /must/ not include
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
+--
+-- -   #VUID-vkCmdSetEvent-commandBuffer-01152# @commandBuffer@’s current
+--     device mask /must/ include exactly one physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetEvent-commandBuffer-parameter# @commandBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetEvent-event-parameter# @event@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Event' handle
+--
+-- -   #VUID-vkCmdSetEvent-stageMask-parameter# @stageMask@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdSetEvent-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-vkCmdSetEvent-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdSetEvent-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdSetEvent-commonparent# Both of @commandBuffer@, and
+--     @event@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
+cmdSetEvent :: forall io
+             . (MonadIO io)
+            => -- | @commandBuffer@ is the command buffer into which the command is
+               -- recorded.
+               CommandBuffer
+            -> -- | @event@ is the event that will be signaled.
+               Event
+            -> -- | @stageMask@ specifies the
+               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>
+               -- used to determine the first
+               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+               ("stageMask" ::: PipelineStageFlags)
+            -> io ()
+cmdSetEvent commandBuffer event stageMask = liftIO $ do
+  let vkCmdSetEventPtr = pVkCmdSetEvent (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetEventPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetEvent is null" Nothing Nothing
+  let vkCmdSetEvent' = mkVkCmdSetEvent vkCmdSetEventPtr
+  traceAroundEvent "vkCmdSetEvent" (vkCmdSetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResetEvent
+  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags -> IO ()
+
+-- | vkCmdResetEvent - Reset an event object to non-signaled state
+--
+-- = Description
+--
+-- 'cmdResetEvent' behaves identically to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04090# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04091# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04092# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04093# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04094# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04095# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04096# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-04097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-03937# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @stageMask@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-06458# Any pipeline stage included
+--     in @stageMask@ /must/ be supported by the capabilities of the queue
+--     family specified by the @queueFamilyIndex@ member of the
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that was
+--     used to create the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-01153# @stageMask@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
+--
+-- -   #VUID-vkCmdResetEvent-event-03834# There /must/ be an execution
+--     dependency between 'cmdResetEvent' and the execution of any
+--     'cmdWaitEvents' that includes @event@ in its @pEvents@ parameter
+--
+-- -   #VUID-vkCmdResetEvent-event-03835# There /must/ be an execution
+--     dependency between 'cmdResetEvent' and the execution of any
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'
+--     that includes @event@ in its @pEvents@ parameter
+--
+-- -   #VUID-vkCmdResetEvent-commandBuffer-01157# @commandBuffer@’s current
+--     device mask /must/ include exactly one physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdResetEvent-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdResetEvent-event-parameter# @event@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Event' handle
+--
+-- -   #VUID-vkCmdResetEvent-stageMask-parameter# @stageMask@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdResetEvent-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-vkCmdResetEvent-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdResetEvent-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdResetEvent-commonparent# Both of @commandBuffer@, and
+--     @event@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
+cmdResetEvent :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which the command is
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @event@ is the event that will be unsignaled.
+                 Event
+              -> -- | @stageMask@ is a bitmask of
+                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                 -- specifying the
+                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>
+                 -- used to determine when the @event@ is unsignaled.
+                 ("stageMask" ::: PipelineStageFlags)
+              -> io ()
+cmdResetEvent commandBuffer event stageMask = liftIO $ do
+  let vkCmdResetEventPtr = pVkCmdResetEvent (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdResetEventPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetEvent is null" Nothing Nothing
+  let vkCmdResetEvent' = mkVkCmdResetEvent vkCmdResetEventPtr
+  traceAroundEvent "vkCmdResetEvent" (vkCmdResetEvent' (commandBufferHandle (commandBuffer)) (event) (stageMask))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWaitEventsUnsafe
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()
+
+foreign import ccall
+  "dynamic" mkVkCmdWaitEventsSafe
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()
+
+-- | cmdWaitEvents with selectable safeness
+cmdWaitEventsSafeOrUnsafe :: forall io
+                           . (MonadIO io)
+                          => (FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> PipelineStageFlags -> PipelineStageFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ())
+                          -> -- | @commandBuffer@ is the command buffer into which the command is
+                             -- recorded.
+                             CommandBuffer
+                          -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.
+                             ("events" ::: Vector Event)
+                          -> -- | @srcStageMask@ is a bitmask of
+                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                             -- specifying the
+                             -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.
+                             ("srcStageMask" ::: PipelineStageFlags)
+                          -> -- | @dstStageMask@ is a bitmask of
+                             -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                             -- specifying the
+                             -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.
+                             ("dstStageMask" ::: PipelineStageFlags)
+                          -> -- | @pMemoryBarriers@ is a pointer to an array of
+                             -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
+                             ("memoryBarriers" ::: Vector MemoryBarrier)
+                          -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
+                             -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
+                             ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
+                          -> -- | @pImageMemoryBarriers@ is a pointer to an array of
+                             -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
+                             ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
+                          -> io ()
+cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEvents commandBuffer events srcStageMask dstStageMask memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do
+  let vkCmdWaitEventsPtr = pVkCmdWaitEvents (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdWaitEventsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWaitEvents is null" Nothing Nothing
+  let vkCmdWaitEvents' = mkVkCmdWaitEvents vkCmdWaitEventsPtr
+  pPEvents <- ContT $ allocaBytes @Event ((Data.Vector.length (events)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)
+  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)
+  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)
+  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)
+  lift $ traceAroundEvent "vkCmdWaitEvents" (vkCmdWaitEvents' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (events)) :: Word32)) (pPEvents) (srcStageMask) (dstStageMask) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))
+  pure $ ()
+
+-- | vkCmdWaitEvents - Wait for one or more events and insert a set of memory
+--
+-- = Description
+--
+-- 'cmdWaitEvents' is largely similar to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2',
+-- but /can/ only wait on signal operations defined by 'cmdSetEvent'. As
+-- 'cmdSetEvent' does not define any access scopes, 'cmdWaitEvents' defines
+-- the first access scope for each event signal operation in addition to
+-- its own access scopes.
+--
+-- Note
+--
+-- Since 'cmdSetEvent' does not have any dependency information beyond a
+-- stage mask, implementations do not have the same opportunity to perform
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
+-- in advance as they do with
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2' and
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'.
+--
+-- When 'cmdWaitEvents' is submitted to a queue, it defines a memory
+-- dependency between prior event signal operations on the same queue or
+-- the host, and subsequent commands. 'cmdWaitEvents' /must/ not be used to
+-- wait on event signal operations occurring on other queues.
+--
+-- The first synchronization scope only includes event signal operations
+-- that operate on members of @pEvents@, and the operations that
+-- happened-before the event signal operations. Event signal operations
+-- performed by 'cmdSetEvent' that occur earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- are included in the first synchronization scope, if the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
+-- pipeline stage in their @stageMask@ parameter is
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
+-- than or equal to the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
+-- pipeline stage in @srcStageMask@. Event signal operations performed by
+-- 'Vulkan.Core10.Event.setEvent' are only included in the first
+-- synchronization scope if
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT' is
+-- included in @srcStageMask@.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands that occur later in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- The second synchronization scope is limited to operations on the
+-- pipeline stages determined by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- specified by @dstStageMask@.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- is limited to accesses in the pipeline stages determined by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- specified by @srcStageMask@. Within that, the first access scope only
+-- includes the first access scopes defined by elements of the
+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
+-- arrays, which each define a set of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
+-- If no memory barriers are specified, then the first access scope
+-- includes no accesses.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- is limited to accesses in the pipeline stages determined by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- specified by @dstStageMask@. Within that, the second access scope only
+-- includes the second access scopes defined by elements of the
+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
+-- arrays, which each define a set of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
+-- If no memory barriers are specified, then the second access scope
+-- includes no accesses.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04090# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04091# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04092# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04093# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04094# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04095# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04096# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-04097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-03937# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @srcStageMask@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04090# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04091# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04092# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04093# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04094# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04095# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04096# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-04097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-03937# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @dstStageMask@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdWaitEvents-srcAccessMask-02815# The @srcAccessMask@
+--     member of each element of @pMemoryBarriers@ /must/ only include
+--     access flags that are supported by one or more of the pipeline
+--     stages in @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdWaitEvents-dstAccessMask-02816# The @dstAccessMask@
+--     member of each element of @pMemoryBarriers@ /must/ only include
+--     access flags that are supported by one or more of the pipeline
+--     stages in @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817# For any element
+--     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @srcQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @srcAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818# For any element
+--     of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @dstQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @dstAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819# For any element of
+--     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @srcQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @srcAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820# For any element of
+--     @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @dstQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @dstAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-06459# Any pipeline stage
+--     included in @srcStageMask@ /must/ be supported by the capabilities
+--     of the queue family specified by the @queueFamilyIndex@ member of
+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-06460# Any pipeline stage
+--     included in @dstStageMask@ /must/ be supported by the capabilities
+--     of the queue family specified by the @queueFamilyIndex@ member of
+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-01158# @srcStageMask@ /must/ be
+--     the bitwise OR of the @stageMask@ parameter used in previous calls
+--     to 'cmdSetEvent' with any of the elements of @pEvents@ and
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
+--     if any of the elements of @pEvents@ was set using
+--     'Vulkan.Core10.Event.setEvent'
+--
+-- -   #VUID-vkCmdWaitEvents-pEvents-01163# If @pEvents@ includes one or
+--     more events that will be signaled by 'Vulkan.Core10.Event.setEvent'
+--     after @commandBuffer@ has been submitted to a queue, then
+--     'cmdWaitEvents' /must/ not be called inside a render pass instance
+--
+-- -   #VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803# The
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any
+--     element of @pBufferMemoryBarriers@ or @pImageMemoryBarriers@ /must/
+--     be equal
+--
+-- -   #VUID-vkCmdWaitEvents-commandBuffer-01167# @commandBuffer@’s current
+--     device mask /must/ include exactly one physical device
+--
+-- -   #VUID-vkCmdWaitEvents-pEvents-03847# Elements of @pEvents@ /must/
+--     not have been signaled by
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWaitEvents-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWaitEvents-pEvents-parameter# @pEvents@ /must/ be a valid
+--     pointer to an array of @eventCount@ valid
+--     'Vulkan.Core10.Handles.Event' handles
+--
+-- -   #VUID-vkCmdWaitEvents-srcStageMask-parameter# @srcStageMask@ /must/
+--     be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdWaitEvents-dstStageMask-parameter# @dstStageMask@ /must/
+--     be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdWaitEvents-pMemoryBarriers-parameter# If
+--     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid
+--     pointer to an array of @memoryBarrierCount@ valid
+--     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures
+--
+-- -   #VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter# If
+--     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@
+--     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@
+--     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures
+--
+-- -   #VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter# If
+--     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/
+--     be a valid pointer to an array of @imageMemoryBarrierCount@ valid
+--     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures
+--
+-- -   #VUID-vkCmdWaitEvents-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-vkCmdWaitEvents-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdWaitEvents-eventCount-arraylength# @eventCount@ /must/ be
+--     greater than @0@
+--
+-- -   #VUID-vkCmdWaitEvents-commonparent# Both of @commandBuffer@, and the
+--     elements of @pEvents@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+-- 'Vulkan.Core10.OtherTypes.MemoryBarrier',
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
+cmdWaitEvents :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which the command is
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.
+                 ("events" ::: Vector Event)
+              -> -- | @srcStageMask@ is a bitmask of
+                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                 -- specifying the
+                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.
+                 ("srcStageMask" ::: PipelineStageFlags)
+              -> -- | @dstStageMask@ is a bitmask of
+                 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                 -- specifying the
+                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.
+                 ("dstStageMask" ::: PipelineStageFlags)
+              -> -- | @pMemoryBarriers@ is a pointer to an array of
+                 -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
+                 ("memoryBarriers" ::: Vector MemoryBarrier)
+              -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
+                 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
+                 ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
+              -> -- | @pImageMemoryBarriers@ is a pointer to an array of
+                 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
+                 ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
+              -> io ()
+cmdWaitEvents = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsUnsafe
+
+-- | A variant of 'cmdWaitEvents' which makes a *safe* FFI call
+cmdWaitEventsSafe :: forall io
+                   . (MonadIO io)
+                  => -- | @commandBuffer@ is the command buffer into which the command is
+                     -- recorded.
+                     CommandBuffer
+                  -> -- | @pEvents@ is a pointer to an array of event object handles to wait on.
+                     ("events" ::: Vector Event)
+                  -> -- | @srcStageMask@ is a bitmask of
+                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                     -- specifying the
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages source stage mask>.
+                     ("srcStageMask" ::: PipelineStageFlags)
+                  -> -- | @dstStageMask@ is a bitmask of
+                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                     -- specifying the
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages destination stage mask>.
+                     ("dstStageMask" ::: PipelineStageFlags)
+                  -> -- | @pMemoryBarriers@ is a pointer to an array of
+                     -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
+                     ("memoryBarriers" ::: Vector MemoryBarrier)
+                  -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
+                     -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
+                     ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
+                  -> -- | @pImageMemoryBarriers@ is a pointer to an array of
+                     -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
+                     ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
+                  -> io ()
+cmdWaitEventsSafe = cmdWaitEventsSafeOrUnsafe mkVkCmdWaitEventsSafe
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPipelineBarrier
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags -> PipelineStageFlags -> DependencyFlags -> Word32 -> Ptr MemoryBarrier -> Word32 -> Ptr BufferMemoryBarrier -> Word32 -> Ptr (SomeStruct ImageMemoryBarrier) -> IO ()
+
+-- | vkCmdPipelineBarrier - Insert a memory dependency
+--
+-- = Description
+--
+-- 'cmdPipelineBarrier' operates almost identically to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdPipelineBarrier2',
+-- except that the scopes and barriers are defined as direct parameters
+-- rather than being defined by an
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo'.
+--
+-- When 'cmdPipelineBarrier' is submitted to a queue, it defines a memory
+-- dependency between commands that were submitted before it, and those
+-- submitted after it.
+--
+-- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the
+-- first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands that occur earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the
+-- first synchronization scope includes only commands that occur earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- within the same subpass. In either case, the first synchronization scope
+-- is limited to operations on the pipeline stages determined by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- specified by @srcStageMask@.
+--
+-- If 'cmdPipelineBarrier' was recorded outside a render pass instance, the
+-- second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands that occur later in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- If 'cmdPipelineBarrier' was recorded inside a render pass instance, the
+-- second synchronization scope includes only commands that occur later in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- within the same subpass. In either case, the second synchronization
+-- scope is limited to operations on the pipeline stages determined by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- specified by @dstStageMask@.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- is limited to accesses in the pipeline stages determined by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- specified by @srcStageMask@. Within that, the first access scope only
+-- includes the first access scopes defined by elements of the
+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
+-- arrays, which each define a set of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
+-- If no memory barriers are specified, then the first access scope
+-- includes no accesses.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- is limited to accesses in the pipeline stages determined by the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- specified by @dstStageMask@. Within that, the second access scope only
+-- includes the second access scopes defined by elements of the
+-- @pMemoryBarriers@, @pBufferMemoryBarriers@ and @pImageMemoryBarriers@
+-- arrays, which each define a set of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-memory-barriers memory barriers>.
+-- If no memory barriers are specified, then the second access scope
+-- includes no accesses.
+--
+-- If @dependencyFlags@ includes
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT', then
+-- any dependency between
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space>
+-- pipeline stages is
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>
+-- - otherwise it is
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-global>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04090# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04091# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04092# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04093# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04094# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04095# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04096# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-04097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-03937# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @srcStageMask@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04090# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04091# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04092# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04093# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04094# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04095# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04096# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-04097# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-03937# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @dstStageMask@ /must/ not be @0@
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcAccessMask-02815# The @srcAccessMask@
+--     member of each element of @pMemoryBarriers@ /must/ only include
+--     access flags that are supported by one or more of the pipeline
+--     stages in @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstAccessMask-02816# The @dstAccessMask@
+--     member of each element of @pMemoryBarriers@ /must/ only include
+--     access flags that are supported by one or more of the pipeline
+--     stages in @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817# For any
+--     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @srcQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @srcAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818# For any
+--     element of @pBufferMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @dstQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @dstAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819# For any
+--     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @srcQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @srcAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @srcStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820# For any
+--     element of @pImageMemoryBarriers@, if its @srcQueueFamilyIndex@ and
+--     @dstQueueFamilyIndex@ members are equal, or if its
+--     @dstQueueFamilyIndex@ is the queue family index that was used to
+--     create the command pool that @commandBuffer@ was allocated from,
+--     then its @dstAccessMask@ member /must/ only contain access flags
+--     that are supported by one or more of the pipeline stages in
+--     @dstStageMask@, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--
+-- -   #VUID-vkCmdPipelineBarrier-pDependencies-02285# If
+--     'cmdPipelineBarrier' is called within a render pass instance, the
+--     render pass /must/ have been created with at least one
+--     'Vulkan.Core10.Pass.SubpassDependency' instance in
+--     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that
+--     expresses a dependency from the current subpass to itself, with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scopes>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+--     that are all supersets of the scopes defined in this command
+--
+-- -   #VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178# If
+--     'cmdPipelineBarrier' is called within a render pass instance, it
+--     /must/ not include any buffer memory barriers
+--
+-- -   #VUID-vkCmdPipelineBarrier-image-04073# If 'cmdPipelineBarrier' is
+--     called within a render pass instance, the @image@ member of any
+--     image memory barrier included in this command /must/ be an
+--     attachment used in the current subpass both as an input attachment,
+--     and as either a color or depth\/stencil attachment
+--
+-- -   #VUID-vkCmdPipelineBarrier-oldLayout-01181# If 'cmdPipelineBarrier'
+--     is called within a render pass instance, the @oldLayout@ and
+--     @newLayout@ members of any image memory barrier included in this
+--     command /must/ be equal
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182# If
+--     'cmdPipelineBarrier' is called within a render pass instance, the
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any image
+--     memory barrier included in this command /must/ be equal
+--
+-- -   #VUID-vkCmdPipelineBarrier-dependencyFlags-01186# If
+--     'cmdPipelineBarrier' is called outside of a render pass instance,
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
+--     /must/ not be included in the dependency flags
+--
+-- -   #VUID-vkCmdPipelineBarrier-None-06191# If 'cmdPipelineBarrier' is
+--     called within a render pass instance, the render pass /must/ not
+--     have been started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-06461# Any pipeline stage
+--     included in @srcStageMask@ /must/ be supported by the capabilities
+--     of the queue family specified by the @queueFamilyIndex@ member of
+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-06462# Any pipeline stage
+--     included in @dstStageMask@ /must/ be supported by the capabilities
+--     of the queue family specified by the @queueFamilyIndex@ member of
+--     the 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' structure that
+--     was used to create the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from, as specified in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPipelineBarrier-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPipelineBarrier-srcStageMask-parameter# @srcStageMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdPipelineBarrier-dstStageMask-parameter# @dstStageMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdPipelineBarrier-dependencyFlags-parameter#
+--     @dependencyFlags@ /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' values
+--
+-- -   #VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter# If
+--     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid
+--     pointer to an array of @memoryBarrierCount@ valid
+--     'Vulkan.Core10.OtherTypes.MemoryBarrier' structures
+--
+-- -   #VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter# If
+--     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@
+--     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@
+--     valid 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures
+--
+-- -   #VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter# If
+--     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/
+--     be a valid pointer to an array of @imageMemoryBarrierCount@ valid
+--     'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures
+--
+-- -   #VUID-vkCmdPipelineBarrier-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-vkCmdPipelineBarrier-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',
+-- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
+-- 'Vulkan.Core10.OtherTypes.MemoryBarrier',
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags'
+cmdPipelineBarrier :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command is
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @srcStageMask@ is a bitmask of
+                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                      -- specifying the
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stages>.
+                      ("srcStageMask" ::: PipelineStageFlags)
+                   -> -- | @dstStageMask@ is a bitmask of
+                      -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+                      -- specifying the
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stages>.
+                      ("dstStageMask" ::: PipelineStageFlags)
+                   -> -- | @dependencyFlags@ is a bitmask of
+                      -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' specifying
+                      -- how execution and memory dependencies are formed.
+                      DependencyFlags
+                   -> -- | @pMemoryBarriers@ is a pointer to an array of
+                      -- 'Vulkan.Core10.OtherTypes.MemoryBarrier' structures.
+                      ("memoryBarriers" ::: Vector MemoryBarrier)
+                   -> -- | @pBufferMemoryBarriers@ is a pointer to an array of
+                      -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier' structures.
+                      ("bufferMemoryBarriers" ::: Vector BufferMemoryBarrier)
+                   -> -- | @pImageMemoryBarriers@ is a pointer to an array of
+                      -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier' structures.
+                      ("imageMemoryBarriers" ::: Vector (SomeStruct ImageMemoryBarrier))
+                   -> io ()
+cmdPipelineBarrier commandBuffer srcStageMask dstStageMask dependencyFlags memoryBarriers bufferMemoryBarriers imageMemoryBarriers = liftIO . evalContT $ do
+  let vkCmdPipelineBarrierPtr = pVkCmdPipelineBarrier (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPipelineBarrierPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPipelineBarrier is null" Nothing Nothing
+  let vkCmdPipelineBarrier' = mkVkCmdPipelineBarrier vkCmdPipelineBarrierPtr
+  pPMemoryBarriers <- ContT $ allocaBytes @MemoryBarrier ((Data.Vector.length (memoryBarriers)) * 24)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers `plusPtr` (24 * (i)) :: Ptr MemoryBarrier) (e)) (memoryBarriers)
+  pPBufferMemoryBarriers <- ContT $ allocaBytes @BufferMemoryBarrier ((Data.Vector.length (bufferMemoryBarriers)) * 56)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers `plusPtr` (56 * (i)) :: Ptr BufferMemoryBarrier) (e)) (bufferMemoryBarriers)
+  pPImageMemoryBarriers <- ContT $ allocaBytes @(ImageMemoryBarrier _) ((Data.Vector.length (imageMemoryBarriers)) * 72)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers `plusPtr` (72 * (i)) :: Ptr (ImageMemoryBarrier _))) (e) . ($ ())) (imageMemoryBarriers)
+  lift $ traceAroundEvent "vkCmdPipelineBarrier" (vkCmdPipelineBarrier' (commandBufferHandle (commandBuffer)) (srcStageMask) (dstStageMask) (dependencyFlags) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32)) (pPMemoryBarriers) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32)) (pPBufferMemoryBarriers) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32)) (forgetExtensions (pPImageMemoryBarriers)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginQuery
+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> QueryControlFlags -> IO ()
+
+-- | vkCmdBeginQuery - Begin a query
+--
+-- = Description
+--
+-- If the @queryType@ of the pool is
+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' and @flags@
+-- contains
+-- 'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT', an
+-- implementation /must/ return a result that matches the actual number of
+-- samples passed. This is described in more detail in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-occlusion Occlusion Queries>.
+--
+-- Calling 'cmdBeginQuery' is equivalent to calling
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginQueryIndexedEXT'
+-- with the @index@ parameter set to zero.
+--
+-- After beginning a query, that query is considered /active/ within the
+-- command buffer it was called in until that same query is ended. Queries
+-- active in a primary command buffer when secondary command buffers are
+-- executed are considered active for those secondary command buffers.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginQuery-None-00807# All queries used by the command
+--     /must/ be unavailable
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-02804# The @queryType@ used to
+--     create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-04728# The @queryType@ used to
+--     create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR'
+--     or
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR'
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-04729# The @queryType@ used to
+--     create @queryPool@ /must/ not be
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV'
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-00800# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-occlusionQueryPrecise precise occlusion queries>
+--     feature is not enabled, or the @queryType@ used to create
+--     @queryPool@ was not
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', @flags@ /must/
+--     not contain
+--     'Vulkan.Core10.Enums.QueryControlFlagBits.QUERY_CONTROL_PRECISE_BIT'
+--
+-- -   #VUID-vkCmdBeginQuery-query-00802# @query@ /must/ be less than the
+--     number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-00803# If the @queryType@ used to
+--     create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION', the
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-00804# If the @queryType@ used to
+--     create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and
+--     any of the @pipelineStatistics@ indicate graphics operations, the
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-00805# If the @queryType@ used to
+--     create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS' and
+--     any of the @pipelineStatistics@ indicate compute operations, the
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support compute operations
+--
+-- -   #VUID-vkCmdBeginQuery-commandBuffer-01885# @commandBuffer@ /must/
+--     not be a protected command buffer
+--
+-- -   #VUID-vkCmdBeginQuery-query-00808# If called within a render pass
+--     instance, the sum of @query@ and the number of bits set in the
+--     current subpass’s view mask /must/ be less than or equal to the
+--     number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdBeginQuery-queryPool-01922# @queryPool@ /must/ have been
+--     created with a @queryType@ that differs from that of any queries
+--     that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
+--     within @commandBuffer@
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-02327# If the @queryType@ used to
+--     create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     the 'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBeginQuery-queryType-02328# If the @queryType@ used to
+--     create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT'
+--     then
+--     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT'::@transformFeedbackQueries@
+--     /must/ be supported
+--
+-- -   #VUID-vkCmdBeginQuery-queryPool-03223# If @queryPool@ was created
+--     with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>
+--     /must/ have been held before
+--     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' was called on
+--     @commandBuffer@
+--
+-- -   #VUID-vkCmdBeginQuery-queryPool-03224# If @queryPool@ was created
+--     with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
+--     one of the counters used to create @queryPool@ was
+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',
+--     the query begin /must/ be the first recorded command in
+--     @commandBuffer@
+--
+-- -   #VUID-vkCmdBeginQuery-queryPool-03225# If @queryPool@ was created
+--     with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
+--     one of the counters used to create @queryPool@ was
+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',
+--     the begin command /must/ not be recorded within a render pass
+--     instance
+--
+-- -   #VUID-vkCmdBeginQuery-queryPool-03226# If @queryPool@ was created
+--     with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
+--     another query pool with a @queryType@
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' has
+--     been used within @commandBuffer@, its parent primary command buffer
+--     or secondary command buffer recorded within the same parent primary
+--     command buffer as @commandBuffer@, the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterMultipleQueryPools performanceCounterMultipleQueryPools>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBeginQuery-None-02863# If @queryPool@ was created with a
+--     @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     this command /must/ not be recorded in a command buffer that, either
+--     directly or through secondary command buffers, also contains a
+--     'cmdResetQueryPool' command affecting the same query
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginQuery-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginQuery-queryPool-parameter# @queryPool@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdBeginQuery-flags-parameter# @flags@ /must/ be a valid
+--     combination of
+--     'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
+--     values
+--
+-- -   #VUID-vkCmdBeginQuery-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-vkCmdBeginQuery-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, compute, decode, or encode
+--     operations
+--
+-- -   #VUID-vkCmdBeginQuery-commonparent# Both of @commandBuffer@, and
+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
+-- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlags',
+-- 'Vulkan.Core10.Handles.QueryPool'
+cmdBeginQuery :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which this command will be
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @queryPool@ is the query pool that will manage the results of the query.
+                 QueryPool
+              -> -- | @query@ is the query index within the query pool that will contain the
+                 -- results.
+                 ("query" ::: Word32)
+              -> -- | @flags@ is a bitmask of
+                 -- 'Vulkan.Core10.Enums.QueryControlFlagBits.QueryControlFlagBits'
+                 -- specifying constraints on the types of queries that /can/ be performed.
+                 QueryControlFlags
+              -> io ()
+cmdBeginQuery commandBuffer queryPool query flags = liftIO $ do
+  let vkCmdBeginQueryPtr = pVkCmdBeginQuery (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdBeginQueryPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginQuery is null" Nothing Nothing
+  let vkCmdBeginQuery' = mkVkCmdBeginQuery vkCmdBeginQueryPtr
+  traceAroundEvent "vkCmdBeginQuery" (vkCmdBeginQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query) (flags))
+  pure $ ()
+
+-- | This function will call the supplied action between calls to
+-- 'cmdBeginQuery' and 'cmdEndQuery'
+--
+-- Note that 'cmdEndQuery' is *not* called if an exception is thrown by the
+-- inner action.
+cmdUseQuery :: forall io r . MonadIO io => CommandBuffer -> QueryPool -> Word32 -> QueryControlFlags -> io r -> io r
+cmdUseQuery commandBuffer queryPool query flags a =
+  (cmdBeginQuery commandBuffer queryPool query flags) *> a <* (cmdEndQuery commandBuffer queryPool query)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndQuery
+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> IO ()
+
+-- | vkCmdEndQuery - Ends a query
+--
+-- = Description
+--
+-- Calling 'cmdEndQuery' is equivalent to calling
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndQueryIndexedEXT' with
+-- the @index@ parameter set to zero.
+--
+-- As queries operate asynchronously, ending a query does not immediately
+-- set the query’s status to available. A query is considered /finished/
+-- when the final results of the query are ready to be retrieved by
+-- 'Vulkan.Core10.Query.getQueryPoolResults' and 'cmdCopyQueryPoolResults',
+-- and this is when the query’s status is set to available.
+--
+-- Once a query is ended the query /must/ finish in finite time, unless the
+-- state of the query is changed using other commands, e.g. by issuing a
+-- reset of the query.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndQuery-None-01923# All queries used by the command
+--     /must/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
+--
+-- -   #VUID-vkCmdEndQuery-query-00810# @query@ /must/ be less than the
+--     number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdEndQuery-commandBuffer-01886# @commandBuffer@ /must/ not
+--     be a protected command buffer
+--
+-- -   #VUID-vkCmdEndQuery-query-00812# If 'cmdEndQuery' is called within a
+--     render pass instance, the sum of @query@ and the number of bits set
+--     in the current subpass’s view mask /must/ be less than or equal to
+--     the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdEndQuery-queryPool-03227# If @queryPool@ was created with
+--     a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
+--     one or more of the counters used to create @queryPool@ was
+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR',
+--     the 'cmdEndQuery' /must/ be the last recorded command in
+--     @commandBuffer@
+--
+-- -   #VUID-vkCmdEndQuery-queryPool-03228# If @queryPool@ was created with
+--     a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' and
+--     one or more of the counters used to create @queryPool@ was
+--     'Vulkan.Extensions.VK_KHR_performance_query.PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR',
+--     the 'cmdEndQuery' /must/ not be recorded within a render pass
+--     instance
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndQuery-commandBuffer-parameter# @commandBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndQuery-queryPool-parameter# @queryPool@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdEndQuery-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-vkCmdEndQuery-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, compute, decode, or encode
+--     operations
+--
+-- -   #VUID-vkCmdEndQuery-commonparent# Both of @commandBuffer@, and
+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
+-- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'
+cmdEndQuery :: forall io
+             . (MonadIO io)
+            => -- | @commandBuffer@ is the command buffer into which this command will be
+               -- recorded.
+               CommandBuffer
+            -> -- | @queryPool@ is the query pool that is managing the results of the query.
+               QueryPool
+            -> -- | @query@ is the query index within the query pool where the result is
+               -- stored.
+               ("query" ::: Word32)
+            -> io ()
+cmdEndQuery commandBuffer queryPool query = liftIO $ do
+  let vkCmdEndQueryPtr = pVkCmdEndQuery (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdEndQueryPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndQuery is null" Nothing Nothing
+  let vkCmdEndQuery' = mkVkCmdEndQuery vkCmdEndQueryPtr
+  traceAroundEvent "vkCmdEndQuery" (vkCmdEndQuery' (commandBufferHandle (commandBuffer)) (queryPool) (query))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResetQueryPool
+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> IO ()
+
+-- | vkCmdResetQueryPool - Reset queries in a query pool
+--
+-- = Description
+--
+-- When executed on a queue, this command sets the status of query indices
+-- [@firstQuery@, @firstQuery@ + @queryCount@ - 1] to unavailable.
+--
+-- If the @queryType@ used to create @queryPool@ was
+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR', this
+-- command sets the status of query indices [@firstQuery@, @firstQuery@ +
+-- @queryCount@ - 1] to unavailable for each pass of @queryPool@, as
+-- indicated by a call to
+-- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.
+--
+-- Note
+--
+-- Because 'cmdResetQueryPool' resets all the passes of the indicated
+-- queries, applications must not record a 'cmdResetQueryPool' command for
+-- a @queryPool@ created with
+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR' in a
+-- command buffer that needs to be submitted multiple times as indicated by
+-- a call to
+-- 'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'.
+-- Otherwise applications will never be able to complete the recorded
+-- queries.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdResetQueryPool-firstQuery-00796# @firstQuery@ /must/ be
+--     less than the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdResetQueryPool-firstQuery-00797# The sum of @firstQuery@
+--     and @queryCount@ /must/ be less than or equal to the number of
+--     queries in @queryPool@
+--
+-- -   #VUID-vkCmdResetQueryPool-None-02841# All queries used by the
+--     command /must/ not be active
+--
+-- -   #VUID-vkCmdResetQueryPool-firstQuery-02862# If @queryPool@ was
+--     created with
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     this command /must/ not be recorded in a command buffer that, either
+--     directly or through secondary command buffers, also contains begin
+--     commands for a query from the set of queries [@firstQuery@,
+--     @firstQuery@ + @queryCount@ - 1]
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdResetQueryPool-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdResetQueryPool-queryPool-parameter# @queryPool@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdResetQueryPool-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-vkCmdResetQueryPool-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, compute, decode, or encode
+--     operations
+--
+-- -   #VUID-vkCmdResetQueryPool-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdResetQueryPool-commonparent# Both of @commandBuffer@, and
+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
+-- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.QueryPool'
+cmdResetQueryPool :: forall io
+                   . (MonadIO io)
+                  => -- | @commandBuffer@ is the command buffer into which this command will be
+                     -- recorded.
+                     CommandBuffer
+                  -> -- | @queryPool@ is the handle of the query pool managing the queries being
+                     -- reset.
+                     QueryPool
+                  -> -- | @firstQuery@ is the initial query index to reset.
+                     ("firstQuery" ::: Word32)
+                  -> -- | @queryCount@ is the number of queries to reset.
+                     ("queryCount" ::: Word32)
+                  -> io ()
+cmdResetQueryPool commandBuffer queryPool firstQuery queryCount = liftIO $ do
+  let vkCmdResetQueryPoolPtr = pVkCmdResetQueryPool (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdResetQueryPoolPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetQueryPool is null" Nothing Nothing
+  let vkCmdResetQueryPool' = mkVkCmdResetQueryPool vkCmdResetQueryPoolPtr
+  traceAroundEvent "vkCmdResetQueryPool" (vkCmdResetQueryPool' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteTimestamp
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlagBits -> QueryPool -> Word32 -> IO ()
+
+-- | vkCmdWriteTimestamp - Write a device timestamp into a query object
+--
+-- = Description
+--
+-- 'cmdWriteTimestamp' latches the value of the timer when all previous
+-- commands have completed executing as far as the specified pipeline
+-- stage, and writes the timestamp value to memory. When the timestamp
+-- value is written, the availability status of the query is set to
+-- available.
+--
+-- Note
+--
+-- If an implementation is unable to detect completion and latch the timer
+-- at any specific stage of the pipeline, it /may/ instead do so at any
+-- logically later stage.
+--
+-- Comparisons between timestamps are not meaningful if the timestamps are
+-- written by commands submitted to different queues.
+--
+-- Note
+--
+-- An example of such a comparison is subtracting an older timestamp from a
+-- newer one to determine the execution time of a sequence of commands.
+--
+-- If 'cmdWriteTimestamp' is called while executing a render pass instance
+-- that has multiview enabled, the timestamp uses N consecutive query
+-- indices in the query pool (starting at @query@) where N is the number of
+-- bits set in the view mask of the subpass the command is executed in. The
+-- resulting query values are determined by an implementation-dependent
+-- choice of one of the following behaviors:
+--
+-- -   The first query is a timestamp value and (if more than one bit is
+--     set in the view mask) zero is written to the remaining queries. If
+--     two timestamps are written in the same subpass, the sum of the
+--     execution time of all views between those commands is the difference
+--     between the first query written by each command.
+--
+-- -   All N queries are timestamp values. If two timestamps are written in
+--     the same subpass, the sum of the execution time of all views between
+--     those commands is the sum of the difference between corresponding
+--     queries written by each command. The difference between
+--     corresponding queries /may/ be the execution time of a single view.
+--
+-- In either case, the application /can/ sum the differences between all N
+-- queries to determine the total execution time.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04074# @pipelineStage@
+--     /must/ be a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported valid stage>
+--     for the queue family that was used to create the command pool that
+--     @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04075# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04076# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04077# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04078# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04079# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04080# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV'
+--     or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-04081# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteTimestamp-synchronization2-06489# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature is not enabled, @pipelineStage@ /must/ not be
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_NONE_KHR'
+--
+-- -   #VUID-vkCmdWriteTimestamp-queryPool-01416# @queryPool@ /must/ have
+--     been created with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
+--
+-- -   #VUID-vkCmdWriteTimestamp-queryPool-00828# The query identified by
+--     @queryPool@ and @query@ /must/ be /unavailable/
+--
+-- -   #VUID-vkCmdWriteTimestamp-timestampValidBits-00829# The command
+--     pool’s queue family /must/ support a non-zero @timestampValidBits@
+--
+-- -   #VUID-vkCmdWriteTimestamp-query-04904# @query@ /must/ be less than
+--     the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdWriteTimestamp-None-00830# All queries used by the
+--     command /must/ be unavailable
+--
+-- -   #VUID-vkCmdWriteTimestamp-query-00831# If 'cmdWriteTimestamp' is
+--     called within a render pass instance, the sum of @query@ and the
+--     number of bits set in the current subpass’s view mask /must/ be less
+--     than or equal to the number of queries in @queryPool@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWriteTimestamp-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWriteTimestamp-pipelineStage-parameter# @pipelineStage@
+--     /must/ be a valid
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     value
+--
+-- -   #VUID-vkCmdWriteTimestamp-queryPool-parameter# @queryPool@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdWriteTimestamp-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-vkCmdWriteTimestamp-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, compute, decode,
+--     or encode operations
+--
+-- -   #VUID-vkCmdWriteTimestamp-commonparent# Both of @commandBuffer@, and
+--     @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
+-- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits',
+-- 'Vulkan.Core10.Handles.QueryPool'
+cmdWriteTimestamp :: forall io
+                   . (MonadIO io)
+                  => -- | @commandBuffer@ is the command buffer into which the command will be
+                     -- recorded.
+                     CommandBuffer
+                  -> -- | @pipelineStage@ is a
+                     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' value,
+                     -- specifying a stage of the pipeline.
+                     PipelineStageFlagBits
+                  -> -- | @queryPool@ is the query pool that will manage the timestamp.
+                     QueryPool
+                  -> -- | @query@ is the query within the query pool that will contain the
+                     -- timestamp.
+                     ("query" ::: Word32)
+                  -> io ()
+cmdWriteTimestamp commandBuffer pipelineStage queryPool query = liftIO $ do
+  let vkCmdWriteTimestampPtr = pVkCmdWriteTimestamp (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdWriteTimestampPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteTimestamp is null" Nothing Nothing
+  let vkCmdWriteTimestamp' = mkVkCmdWriteTimestamp vkCmdWriteTimestampPtr
+  traceAroundEvent "vkCmdWriteTimestamp" (vkCmdWriteTimestamp' (commandBufferHandle (commandBuffer)) (pipelineStage) (queryPool) (query))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyQueryPoolResults
+  :: FunPtr (Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()) -> Ptr CommandBuffer_T -> QueryPool -> Word32 -> Word32 -> Buffer -> DeviceSize -> DeviceSize -> QueryResultFlags -> IO ()
+
+-- | vkCmdCopyQueryPoolResults - Copy the results of queries in a query pool
+-- to a buffer object
+--
+-- = Description
+--
+-- 'cmdCopyQueryPoolResults' is guaranteed to see the effect of previous
+-- uses of 'cmdResetQueryPool' in the same queue, without any additional
+-- synchronization. Thus, the results will always reflect the most recent
+-- use of the query.
+--
+-- @flags@ has the same possible values described above for the @flags@
+-- parameter of 'Vulkan.Core10.Query.getQueryPoolResults', but the
+-- different style of execution causes some subtle behavioral differences.
+-- Because 'cmdCopyQueryPoolResults' executes in order with respect to
+-- other query commands, there is less ambiguity about which use of a query
+-- is being requested.
+--
+-- Results for all requested occlusion queries, pipeline statistics
+-- queries, transform feedback queries, and timestamp queries are written
+-- as 64-bit unsigned integer values if
+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set or
+-- 32-bit unsigned integer values otherwise. Performance queries store
+-- results in a tightly packed array whose type is determined by the @unit@
+-- member of the corresponding
+-- 'Vulkan.Extensions.VK_KHR_performance_query.PerformanceCounterKHR'.
+--
+-- If neither of
+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' and
+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
+-- are set, results are only written out for queries in the available
+-- state.
+--
+-- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is
+-- set, the implementation will wait for each query’s status to be in the
+-- available state before retrieving the numerical results for that query.
+-- This is guaranteed to reflect the most recent use of the query on the
+-- same queue, assuming that the query is not being simultaneously used by
+-- other queues. If the query does not become available in a finite amount
+-- of time (e.g. due to not issuing a query since the last reset), a
+-- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' error /may/ occur.
+--
+-- Similarly, if
+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT'
+-- is set and
+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is not
+-- set, the availability is guaranteed to reflect the most recent use of
+-- the query on the same queue, assuming that the query is not being
+-- simultaneously used by other queues. As with
+-- 'Vulkan.Core10.Query.getQueryPoolResults', implementations /must/
+-- guarantee that if they return a non-zero availability value, then the
+-- numerical results are valid.
+--
+-- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT' is
+-- set, 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WAIT_BIT' is
+-- not set, and the query’s status is unavailable, an intermediate result
+-- value between zero and the final result value is written for that query.
+--
+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
+-- /must/ not be used if the pool’s @queryType@ is
+-- 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'.
+--
+-- 'cmdCopyQueryPoolResults' is considered to be a transfer operation, and
+-- its writes to buffer memory /must/ be synchronized using
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'
+-- and 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT'
+-- before using the results.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-dstOffset-00819# @dstOffset@ /must/
+--     be less than the size of @dstBuffer@
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00820# @firstQuery@
+--     /must/ be less than the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-firstQuery-00821# The sum of
+--     @firstQuery@ and @queryCount@ /must/ be less than or equal to the
+--     number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-flags-00822# If
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not
+--     set in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of
+--     @4@
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-flags-00823# If
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is set
+--     in @flags@ then @dstOffset@ and @stride@ /must/ be multiples of @8@
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824# @dstBuffer@ /must/
+--     have enough storage, from @dstOffset@, to contain the result of each
+--     query, as described
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-memorylayout here>
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825# @dstBuffer@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826# If @dstBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-00827# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP', @flags@ /must/
+--     not contain
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03232# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR'::@allowCommandBufferQueryCopies@
+--     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03233# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     @flags@ /must/ not contain
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_WITH_AVAILABILITY_BIT',
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_PARTIAL_BIT'
+--     or 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT'
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-03234# If the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     the @queryPool@ /must/ have been submitted once for each pass as
+--     retrieved via a call to
+--     'Vulkan.Extensions.VK_KHR_performance_query.getPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR'
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-queryType-02734#
+--     'cmdCopyQueryPoolResults' /must/ not be called if the @queryType@
+--     used to create @queryPool@ was
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_INTEL'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-queryPool-parameter# @queryPool@
+--     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter# @dstBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-flags-parameter# @flags@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' values
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-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-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- -   #VUID-vkCmdCopyQueryPoolResults-commonparent# Each of
+--     @commandBuffer@, @dstBuffer@, and @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Handles.QueryPool',
+-- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlags'
+cmdCopyQueryPoolResults :: forall io
+                         . (MonadIO io)
+                        => -- | @commandBuffer@ is the command buffer into which this command will be
+                           -- recorded.
+                           CommandBuffer
+                        -> -- | @queryPool@ is the query pool managing the queries containing the
+                           -- desired results.
+                           QueryPool
+                        -> -- | @firstQuery@ is the initial query index.
+                           ("firstQuery" ::: Word32)
+                        -> -- | @queryCount@ is the number of queries. @firstQuery@ and @queryCount@
+                           -- together define a range of queries.
+                           ("queryCount" ::: Word32)
+                        -> -- | @dstBuffer@ is a 'Vulkan.Core10.Handles.Buffer' object that will receive
+                           -- the results of the copy command.
+                           ("dstBuffer" ::: Buffer)
+                        -> -- | @dstOffset@ is an offset into @dstBuffer@.
+                           ("dstOffset" ::: DeviceSize)
+                        -> -- | @stride@ is the stride in bytes between results for individual queries
+                           -- within @dstBuffer@. The required size of the backing memory for
+                           -- @dstBuffer@ is determined as described above for
+                           -- 'Vulkan.Core10.Query.getQueryPoolResults'.
+                           ("stride" ::: DeviceSize)
+                        -> -- | @flags@ is a bitmask of
+                           -- 'Vulkan.Core10.Enums.QueryResultFlagBits.QueryResultFlagBits' specifying
+                           -- how and when results are returned.
+                           QueryResultFlags
+                        -> io ()
+cmdCopyQueryPoolResults commandBuffer queryPool firstQuery queryCount dstBuffer dstOffset stride flags = liftIO $ do
+  let vkCmdCopyQueryPoolResultsPtr = pVkCmdCopyQueryPoolResults (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdCopyQueryPoolResultsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyQueryPoolResults is null" Nothing Nothing
+  let vkCmdCopyQueryPoolResults' = mkVkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResultsPtr
+  traceAroundEvent "vkCmdCopyQueryPoolResults" (vkCmdCopyQueryPoolResults' (commandBufferHandle (commandBuffer)) (queryPool) (firstQuery) (queryCount) (dstBuffer) (dstOffset) (stride) (flags))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPushConstants
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()) -> Ptr CommandBuffer_T -> PipelineLayout -> ShaderStageFlags -> Word32 -> Word32 -> Ptr () -> IO ()
+
+-- | vkCmdPushConstants - Update the values of push constants
+--
+-- = Description
+--
+-- When a command buffer begins recording, all push constant values are
+-- undefined. Reads of undefined push constant values by the executing
+-- shader return undefined values.
+--
+-- Push constant values /can/ be updated incrementally, causing shader
+-- stages in @stageFlags@ to read the new data from @pValues@ for push
+-- constants modified by this command, while still reading the previous
+-- data for push constants not modified by this command. When a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline command>
+-- is issued, the bound pipeline’s layout /must/ be compatible with the
+-- layouts used to set the values of all push constants in the pipeline
+-- layout’s push constant ranges, as described in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
+-- Binding a pipeline with a layout that is not compatible with the push
+-- constant layout does not disturb the push constant values.
+--
+-- Note
+--
+-- As @stageFlags@ needs to include all flags the relevant push constant
+-- ranges were created with, any flags that are not supported by the queue
+-- family that the 'Vulkan.Core10.Handles.CommandPool' used to allocate
+-- @commandBuffer@ was created on are ignored.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPushConstants-offset-01795# For each byte in the range
+--     specified by @offset@ and @size@ and for each shader stage in
+--     @stageFlags@, there /must/ be a push constant range in @layout@ that
+--     includes that byte and that stage
+--
+-- -   #VUID-vkCmdPushConstants-offset-01796# For each byte in the range
+--     specified by @offset@ and @size@ and for each push constant range
+--     that overlaps that byte, @stageFlags@ /must/ include all stages in
+--     that push constant range’s
+--     'Vulkan.Core10.PipelineLayout.PushConstantRange'::@stageFlags@
+--
+-- -   #VUID-vkCmdPushConstants-offset-00368# @offset@ /must/ be a multiple
+--     of @4@
+--
+-- -   #VUID-vkCmdPushConstants-size-00369# @size@ /must/ be a multiple of
+--     @4@
+--
+-- -   #VUID-vkCmdPushConstants-offset-00370# @offset@ /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
+--
+-- -   #VUID-vkCmdPushConstants-size-00371# @size@ /must/ be less than or
+--     equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxPushConstantsSize@
+--     minus @offset@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPushConstants-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPushConstants-layout-parameter# @layout@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.PipelineLayout' handle
+--
+-- -   #VUID-vkCmdPushConstants-stageFlags-parameter# @stageFlags@ /must/
+--     be a valid combination of
+--     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' values
+--
+-- -   #VUID-vkCmdPushConstants-stageFlags-requiredbitmask# @stageFlags@
+--     /must/ not be @0@
+--
+-- -   #VUID-vkCmdPushConstants-pValues-parameter# @pValues@ /must/ be a
+--     valid pointer to an array of @size@ bytes
+--
+-- -   #VUID-vkCmdPushConstants-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-vkCmdPushConstants-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdPushConstants-size-arraylength# @size@ /must/ be greater
+--     than @0@
+--
+-- -   #VUID-vkCmdPushConstants-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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Handles.PipelineLayout',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags'
+cmdPushConstants :: forall io
+                  . (MonadIO io)
+                 => -- | @commandBuffer@ is the command buffer in which the push constant update
+                    -- will be recorded.
+                    CommandBuffer
+                 -> -- | @layout@ is the pipeline layout used to program the push constant
+                    -- updates.
+                    PipelineLayout
+                 -> -- | @stageFlags@ is a bitmask of
+                    -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' specifying
+                    -- the shader stages that will use the push constants in the updated range.
+                    ShaderStageFlags
+                 -> -- | @offset@ is the start offset of the push constant range to update, in
+                    -- units of bytes.
+                    ("offset" ::: Word32)
+                 -> -- | @size@ is the size of the push constant range to update, in units of
+                    -- bytes.
+                    ("size" ::: Word32)
+                 -> -- | @pValues@ is a pointer to an array of @size@ bytes containing the new
+                    -- push constant values.
+                    ("values" ::: Ptr ())
+                 -> io ()
+cmdPushConstants commandBuffer layout stageFlags offset size values = liftIO $ do
+  let vkCmdPushConstantsPtr = pVkCmdPushConstants (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdPushConstantsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPushConstants is null" Nothing Nothing
+  let vkCmdPushConstants' = mkVkCmdPushConstants vkCmdPushConstantsPtr
+  traceAroundEvent "vkCmdPushConstants" (vkCmdPushConstants' (commandBufferHandle (commandBuffer)) (layout) (stageFlags) (offset) (size) (values))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginRenderPass
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderPassBeginInfo) -> SubpassContents -> IO ()
+
+-- | vkCmdBeginRenderPass - Begin a new render pass
+--
+-- = Description
+--
+-- After beginning a render pass instance, the command buffer is ready to
+-- record the commands for the first subpass of that render pass.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00895# If any of the
+--     @initialLayout@ or @finalLayout@ member of the
+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
+--     structures specified when creating the render pass specified in the
+--     @renderPass@ member of @pRenderPassBegin@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--     then the corresponding attachment image view of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
+--     have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-01758# If any of the
+--     @initialLayout@ or @finalLayout@ member of the
+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
+--     structures specified when creating the render pass specified in the
+--     @renderPass@ member of @pRenderPassBegin@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL',
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
+--     then the corresponding attachment image view of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
+--     have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-02842# If any of the
+--     @initialLayout@ or @finalLayout@ member of the
+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
+--     structures specified when creating the render pass specified in the
+--     @renderPass@ member of @pRenderPassBegin@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--     then the corresponding attachment image view of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
+--     have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843# If any of the
+--     @stencilInitialLayout@ or @stencilFinalLayout@ member of the
+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentDescriptionStencilLayout'
+--     structures or the @stencilLayout@ member of the
+--     'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout'
+--     structures specified when creating the render pass specified in the
+--     @renderPass@ member of @pRenderPassBegin@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--     then the corresponding attachment image view of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
+--     have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00897# If any of the
+--     @initialLayout@ or @finalLayout@ member of the
+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
+--     structures specified when creating the render pass specified in the
+--     @renderPass@ member of @pRenderPassBegin@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
+--     then the corresponding attachment image view of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
+--     have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00898# If any of the
+--     @initialLayout@ or @finalLayout@ member of the
+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
+--     structures specified when creating the render pass specified in the
+--     @renderPass@ member of @pRenderPassBegin@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     then the corresponding attachment image view of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
+--     have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00899# If any of the
+--     @initialLayout@ or @finalLayout@ member of the
+--     'Vulkan.Core10.Pass.AttachmentDescription' structures or the
+--     @layout@ member of the 'Vulkan.Core10.Pass.AttachmentReference'
+--     structures specified when creating the render pass specified in the
+--     @renderPass@ member of @pRenderPassBegin@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     then the corresponding attachment image view of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@ /must/
+--     have been created with a @usage@ value including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-vkCmdBeginRenderPass-initialLayout-00900# If the
+--     @initialLayout@ member of any of the
+--     'Vulkan.Core10.Pass.AttachmentDescription' structures specified when
+--     creating the render pass specified in the @renderPass@ member of
+--     @pRenderPassBegin@ is not
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', then each
+--     such @initialLayout@ /must/ be equal to the current layout of the
+--     corresponding attachment image subresource of the framebuffer
+--     specified in the @framebuffer@ member of @pRenderPassBegin@
+--
+-- -   #VUID-vkCmdBeginRenderPass-srcStageMask-06451# The @srcStageMask@
+--     members of any element of the @pDependencies@ member of
+--     'Vulkan.Core10.Pass.RenderPassCreateInfo' used to create
+--     @renderPass@ /must/ be supported by the capabilities of the queue
+--     family identified by the @queueFamilyIndex@ member of the
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to create the
+--     command pool which @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdBeginRenderPass-dstStageMask-06452# The @dstStageMask@
+--     members of any element of the @pDependencies@ member of
+--     'Vulkan.Core10.Pass.RenderPassCreateInfo' used to create
+--     @renderPass@ /must/ be supported by the capabilities of the queue
+--     family identified by the @queueFamilyIndex@ member of the
+--     'Vulkan.Core10.CommandPool.CommandPoolCreateInfo' used to create the
+--     command pool which @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdBeginRenderPass-framebuffer-02532# For any attachment in
+--     @framebuffer@ that is used by @renderPass@ and is bound to memory
+--     locations that are also bound to another attachment used by
+--     @renderPass@, and if at least one of those uses causes either
+--     attachment to be written to, both attachments /must/ have had the
+--     'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT'
+--     set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginRenderPass-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter#
+--     @pRenderPassBegin@ /must/ be a valid pointer to a valid
+--     'RenderPassBeginInfo' structure
+--
+-- -   #VUID-vkCmdBeginRenderPass-contents-parameter# @contents@ /must/ be
+--     a valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value
+--
+-- -   #VUID-vkCmdBeginRenderPass-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-vkCmdBeginRenderPass-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBeginRenderPass-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdBeginRenderPass-bufferlevel# @commandBuffer@ /must/ be a
+--     primary 'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderPassBeginInfo',
+-- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'
+cmdBeginRenderPass :: forall a io
+                    . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer in which to record the command.
+                      CommandBuffer
+                   -> -- | @pRenderPassBegin@ is a pointer to a 'RenderPassBeginInfo' structure
+                      -- specifying the render pass to begin an instance of, and the framebuffer
+                      -- the instance uses.
+                      (RenderPassBeginInfo a)
+                   -> -- | @contents@ is a 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'
+                      -- value specifying how the commands in the first subpass will be provided.
+                      SubpassContents
+                   -> io ()
+cmdBeginRenderPass commandBuffer renderPassBegin contents = liftIO . evalContT $ do
+  let vkCmdBeginRenderPassPtr = pVkCmdBeginRenderPass (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBeginRenderPassPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginRenderPass is null" Nothing Nothing
+  let vkCmdBeginRenderPass' = mkVkCmdBeginRenderPass vkCmdBeginRenderPassPtr
+  pRenderPassBegin <- ContT $ withCStruct (renderPassBegin)
+  lift $ traceAroundEvent "vkCmdBeginRenderPass" (vkCmdBeginRenderPass' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderPassBegin) (contents))
+  pure $ ()
+
+-- | This function will call the supplied action between calls to
+-- 'cmdBeginRenderPass' and 'cmdEndRenderPass'
+--
+-- Note that 'cmdEndRenderPass' is *not* called if an exception is thrown
+-- by the inner action.
+cmdUseRenderPass :: forall a io r . (Extendss RenderPassBeginInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderPassBeginInfo a -> SubpassContents -> io r -> io r
+cmdUseRenderPass commandBuffer pRenderPassBegin contents a =
+  (cmdBeginRenderPass commandBuffer pRenderPassBegin contents) *> a <* (cmdEndRenderPass commandBuffer)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdNextSubpass
+  :: FunPtr (Ptr CommandBuffer_T -> SubpassContents -> IO ()) -> Ptr CommandBuffer_T -> SubpassContents -> IO ()
+
+-- | vkCmdNextSubpass - Transition to the next subpass of a render pass
+--
+-- = Description
+--
+-- The subpass index for a render pass begins at zero when
+-- 'cmdBeginRenderPass' is recorded, and increments each time
+-- 'cmdNextSubpass' is recorded.
+--
+-- Moving to the next subpass automatically performs any multisample
+-- resolve operations in the subpass being ended. End-of-subpass
+-- multisample resolves are treated as color attachment writes for the
+-- purposes of synchronization. This applies to resolve operations for both
+-- color and depth\/stencil attachments. That is, they are considered to
+-- execute in the
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- pipeline stage and their writes are synchronized with
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
+-- Synchronization between rendering within a subpass and any resolve
+-- operations at the end of the subpass occurs automatically, without need
+-- for explicit dependencies or pipeline barriers. However, if the resolve
+-- attachment is also used in a different subpass, an explicit dependency
+-- is needed.
+--
+-- After transitioning to the next subpass, the application /can/ record
+-- the commands for that subpass.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdNextSubpass-None-00909# The current subpass index /must/
+--     be less than the number of subpasses in the render pass minus one
+--
+-- -   #VUID-vkCmdNextSubpass-None-02349# This command /must/ not be
+--     recorded when transform feedback is active
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdNextSubpass-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdNextSubpass-contents-parameter# @contents@ /must/ be a
+--     valid 'Vulkan.Core10.Enums.SubpassContents.SubpassContents' value
+--
+-- -   #VUID-vkCmdNextSubpass-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-vkCmdNextSubpass-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdNextSubpass-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdNextSubpass-bufferlevel# @commandBuffer@ /must/ be a
+--     primary 'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.SubpassContents.SubpassContents'
+cmdNextSubpass :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer in which to record the command.
+                  CommandBuffer
+               -> -- | @contents@ specifies how the commands in the next subpass will be
+                  -- provided, in the same fashion as the corresponding parameter of
+                  -- 'cmdBeginRenderPass'.
+                  SubpassContents
+               -> io ()
+cmdNextSubpass commandBuffer contents = liftIO $ do
+  let vkCmdNextSubpassPtr = pVkCmdNextSubpass (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdNextSubpassPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdNextSubpass is null" Nothing Nothing
+  let vkCmdNextSubpass' = mkVkCmdNextSubpass vkCmdNextSubpassPtr
+  traceAroundEvent "vkCmdNextSubpass" (vkCmdNextSubpass' (commandBufferHandle (commandBuffer)) (contents))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndRenderPass
+  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()
+
+-- | vkCmdEndRenderPass - End the current render pass
+--
+-- = Description
+--
+-- Ending a render pass instance performs any multisample resolve
+-- operations on the final subpass.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndRenderPass-None-00910# The current subpass index
+--     /must/ be equal to the number of subpasses in the render pass minus
+--     one
+--
+-- -   #VUID-vkCmdEndRenderPass-None-02351# This command /must/ not be
+--     recorded when transform feedback is active
+--
+-- -   #VUID-vkCmdEndRenderPass-None-06170# The current render pass
+--     instance /must/ not have been begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndRenderPass-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndRenderPass-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-vkCmdEndRenderPass-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdEndRenderPass-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- -   #VUID-vkCmdEndRenderPass-bufferlevel# @commandBuffer@ /must/ be a
+--     primary 'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdEndRenderPass :: forall io
+                  . (MonadIO io)
+                 => -- | @commandBuffer@ is the command buffer in which to end the current render
+                    -- pass instance.
+                    CommandBuffer
+                 -> io ()
+cmdEndRenderPass commandBuffer = liftIO $ do
+  let vkCmdEndRenderPassPtr = pVkCmdEndRenderPass (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdEndRenderPassPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRenderPass is null" Nothing Nothing
+  let vkCmdEndRenderPass' = mkVkCmdEndRenderPass vkCmdEndRenderPassPtr
+  traceAroundEvent "vkCmdEndRenderPass" (vkCmdEndRenderPass' (commandBufferHandle (commandBuffer)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdExecuteCommands
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr (Ptr CommandBuffer_T) -> IO ()
+
+-- | vkCmdExecuteCommands - Execute a secondary command buffer from a primary
+-- command buffer
+--
+-- = Description
+--
+-- If any element of @pCommandBuffers@ was not recorded with the
+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
+-- flag, and it was recorded into any other primary command buffer which is
+-- currently in the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable or recording state>,
+-- that primary command buffer becomes
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00088# Each element of
+--     @pCommandBuffers@ /must/ have been allocated with a @level@ of
+--     'Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00089# Each element of
+--     @pCommandBuffers@ /must/ be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00091# If any element of
+--     @pCommandBuffers@ was not recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
+--     flag, it /must/ not be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00092# If any element of
+--     @pCommandBuffers@ was not recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
+--     flag, it /must/ not have already been recorded to @commandBuffer@
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00093# If any element of
+--     @pCommandBuffers@ was not recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT'
+--     flag, it /must/ not appear more than once in @pCommandBuffers@
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00094# Each element of
+--     @pCommandBuffers@ /must/ have been allocated from a
+--     'Vulkan.Core10.Handles.CommandPool' that was created for the same
+--     queue family as the 'Vulkan.Core10.Handles.CommandPool' from which
+--     @commandBuffer@ was allocated
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00096# If
+--     'cmdExecuteCommands' is being called within a render pass instance,
+--     each element of @pCommandBuffers@ /must/ have been recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00099# If
+--     'cmdExecuteCommands' is being called within a render pass instance,
+--     and any element of @pCommandBuffers@ was recorded with
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@framebuffer@
+--     not equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE', that
+--     'Vulkan.Core10.Handles.Framebuffer' /must/ match the
+--     'Vulkan.Core10.Handles.Framebuffer' used in the current render pass
+--     instance
+--
+-- -   #VUID-vkCmdExecuteCommands-contents-06018# If 'cmdExecuteCommands'
+--     is being called within a render pass instance begun with
+--     'cmdBeginRenderPass', its @contents@ parameter /must/ have been set
+--     to
+--     'Vulkan.Core10.Enums.SubpassContents.SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS'
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06019# If
+--     'cmdExecuteCommands' is being called within a render pass instance
+--     begun with 'cmdBeginRenderPass', each element of @pCommandBuffers@
+--     /must/ have been recorded with
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@subpass@
+--     set to the index of the subpass which the given command buffer will
+--     be executed in
+--
+-- -   #VUID-vkCmdExecuteCommands-pBeginInfo-06020# If 'cmdExecuteCommands'
+--     is being called within a render pass instance begun with
+--     'cmdBeginRenderPass', the render passes specified in the
+--     @pBeginInfo->pInheritanceInfo->renderPass@ members of the
+--     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands used to
+--     begin recording each element of @pCommandBuffers@ /must/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility compatible>
+--     with the current render pass
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-02865# If 'cmdExecuteCommands' is
+--     being called within a render pass instance that included
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
+--     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of
+--     @pCommandBuffers@ /must/ have been recorded with
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'
+--     in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-02866# If 'cmdExecuteCommands' is
+--     being called within a render pass instance that included
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
+--     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of
+--     @pCommandBuffers@ /must/ have been recorded with
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@transform@
+--     identical to
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-02867# If 'cmdExecuteCommands' is
+--     being called within a render pass instance that included
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
+--     in the @pNext@ chain of 'RenderPassBeginInfo', then each element of
+--     @pCommandBuffers@ /must/ have been recorded with
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM'::@renderArea@
+--     identical to 'RenderPassBeginInfo'::@renderArea@
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00100# If
+--     'cmdExecuteCommands' is not being called within a render pass
+--     instance, each element of @pCommandBuffers@ /must/ not have been
+--     recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00101# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedQueries inherited queries>
+--     feature is not enabled, @commandBuffer@ /must/ not have any queries
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00102# If @commandBuffer@
+--     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>,
+--     then each element of @pCommandBuffers@ /must/ have been recorded
+--     with
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@occlusionQueryEnable@
+--     set to 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00103# If @commandBuffer@
+--     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_OCCLUSION' query
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>,
+--     then each element of @pCommandBuffers@ /must/ have been recorded
+--     with
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@queryFlags@
+--     having all bits set that are set for the query
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-00104# If @commandBuffer@
+--     has a 'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'
+--     query
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>,
+--     then each element of @pCommandBuffers@ /must/ have been recorded
+--     with
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@pipelineStatistics@
+--     having all bits set that are set in the
+--     'Vulkan.Core10.Handles.QueryPool' the query uses
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-00105# Each element of
+--     @pCommandBuffers@ /must/ not begin any query types that are
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
+--     in @commandBuffer@
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-01820# If @commandBuffer@
+--     is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, each element of @pCommandBuffers@ /must/ be a
+--     protected command buffer
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-01821# If @commandBuffer@
+--     is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, each element of @pCommandBuffers@ /must/ be an
+--     unprotected command buffer
+--
+-- -   #VUID-vkCmdExecuteCommands-None-02286# This command /must/ not be
+--     recorded when transform feedback is active
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06021# If
+--     @pCommandBuffers@ contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     there /must/ be no action or synchronization commands between that
+--     render pass instance and any render pass instance that resumes it
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-06022# If
+--     @pCommandBuffers@ contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     there /must/ be no render pass instances between that render pass
+--     instance and any render pass instance that resumes it
+--
+-- -   #VUID-vkCmdExecuteCommands-variableSampleLocations-06023# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
+--     limit is not supported, and any element of @pCommandBuffers@
+--     contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     where a graphics pipeline has been bound, any pipelines bound in the
+--     render pass instance that resumes it, or any subsequent render pass
+--     instances that resume from that one and so on, /must/ use the same
+--     sample locations
+--
+-- -   #VUID-vkCmdExecuteCommands-flags-06024# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     its
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter /must/ have included
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--
+-- -   #VUID-vkCmdExecuteCommands-pBeginInfo-06025# If 'cmdExecuteCommands'
+--     is being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the render passes specified in the
+--     @pBeginInfo->pInheritanceInfo->renderPass@ members of the
+--     'Vulkan.Core10.CommandBuffer.beginCommandBuffer' commands used to
+--     begin recording each element of @pCommandBuffers@ /must/ be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdExecuteCommands-flags-06026# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @flags@ member of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@flags@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     excluding
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--
+-- -   #VUID-vkCmdExecuteCommands-colorAttachmentCount-06027# If
+--     'cmdExecuteCommands' is being called within a render pass instance
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @colorAttachmentCount@ member of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdExecuteCommands-imageView-06028# If 'cmdExecuteCommands'
+--     is being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     if the @imageView@ member of an element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     element of the @pColorAttachmentFormats@ member of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the format used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-pDepthAttachment-06029# If
+--     'cmdExecuteCommands' is being called within a render pass instance
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     if the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthAttachmentFormat@ member of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the format used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-pStencilAttachment-06030# If
+--     'cmdExecuteCommands' is being called within a render pass instance
+--     begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     if the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @stencilAttachmentFormat@ member of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the format used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-viewMask-06031# If 'cmdExecuteCommands'
+--     is being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
+--     the @viewMask@ member of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-06032# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, if the @imageView@ member of an element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the corresponding
+--     element of the @pColorAttachmentSamples@ member of the
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the sample count used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-06033# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, if the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of the
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the sample count used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-06034# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, if the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
+--     @depthStencilAttachmentSamples@ member of the
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure included in the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@pInheritanceInfo@
+--     used to begin recording each element of @pCommandBuffers@ /must/ be
+--     equal to the sample count used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-06035# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not
+--     include a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, if the @imageView@ member of an element of the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@
+--     /must/ be equal to the sample count used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-06036# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not
+--     include a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, if the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->imageView@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@
+--     /must/ be equal to the sample count used to create that image view
+--
+-- -   #VUID-vkCmdExecuteCommands-pNext-06037# If 'cmdExecuteCommands' is
+--     being called within a render pass instance begun with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     and the @pNext@ chain of
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' does not
+--     include a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
+--     structure, if the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->imageView@
+--     parameter to
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@
+--     /must/ be equal to the sample count used to create that image view
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdExecuteCommands-pCommandBuffers-parameter#
+--     @pCommandBuffers@ /must/ be a valid pointer to an array of
+--     @commandBufferCount@ valid 'Vulkan.Core10.Handles.CommandBuffer'
+--     handles
+--
+-- -   #VUID-vkCmdExecuteCommands-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-vkCmdExecuteCommands-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdExecuteCommands-bufferlevel# @commandBuffer@ /must/ be a
+--     primary 'Vulkan.Core10.Handles.CommandBuffer'
+--
+-- -   #VUID-vkCmdExecuteCommands-commandBufferCount-arraylength#
+--     @commandBufferCount@ /must/ be greater than @0@
+--
+-- -   #VUID-vkCmdExecuteCommands-commonparent# Both of @commandBuffer@,
+--     and the elements of @pCommandBuffers@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdExecuteCommands :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is a handle to a primary command buffer that the
+                      -- secondary command buffers are executed in.
+                      CommandBuffer
+                   -> -- | @pCommandBuffers@ is a pointer to an array of @commandBufferCount@
+                      -- secondary command buffer handles, which are recorded to execute in the
+                      -- primary command buffer in the order they are listed in the array.
+                      ("commandBuffers" ::: Vector CommandBuffer)
+                   -> io ()
+cmdExecuteCommands commandBuffer commandBuffers = liftIO . evalContT $ do
+  let vkCmdExecuteCommandsPtr = pVkCmdExecuteCommands (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdExecuteCommandsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdExecuteCommands is null" Nothing Nothing
+  let vkCmdExecuteCommands' = mkVkCmdExecuteCommands vkCmdExecuteCommandsPtr
+  pPCommandBuffers <- ContT $ allocaBytes @(Ptr CommandBuffer_T) ((Data.Vector.length (commandBuffers)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBuffers `plusPtr` (8 * (i)) :: Ptr (Ptr CommandBuffer_T)) (commandBufferHandle (e))) (commandBuffers)
+  lift $ traceAroundEvent "vkCmdExecuteCommands" (vkCmdExecuteCommands' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (commandBuffers)) :: Word32)) (pPCommandBuffers))
+  pure $ ()
+
+
+-- | VkClearRect - Structure specifying a clear rectangle
+--
+-- = Description
+--
+-- The layers [@baseArrayLayer@, @baseArrayLayer@ + @layerCount@) counting
+-- from the base layer of the attachment image view are cleared.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'cmdClearAttachments'
+data ClearRect = ClearRect
+  { -- | @rect@ is the two-dimensional region to be cleared.
+    rect :: Rect2D
+  , -- | @baseArrayLayer@ is the first layer to be cleared.
+    baseArrayLayer :: Word32
+  , -- | @layerCount@ is the number of layers to clear.
+    layerCount :: Word32
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ClearRect)
+#endif
+deriving instance Show ClearRect
+
+instance ToCStruct ClearRect where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ClearRect{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr Rect2D)) (rect)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (baseArrayLayer)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (layerCount)
+    f
+  cStructSize = 24
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr Rect2D)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ClearRect where
+  peekCStruct p = do
+    rect <- peekCStruct @Rect2D ((p `plusPtr` 0 :: Ptr Rect2D))
+    baseArrayLayer <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    layerCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pure $ ClearRect
+             rect baseArrayLayer layerCount
+
+instance Storable ClearRect where
+  sizeOf ~_ = 24
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ClearRect where
+  zero = ClearRect
+           zero
+           zero
+           zero
+
+
+-- | VkImageSubresourceLayers - Structure specifying an image subresource
+-- layers
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageSubresourceLayers-aspectMask-00167# If @aspectMask@
+--     contains
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it
+--     /must/ not contain either of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkImageSubresourceLayers-aspectMask-00168# @aspectMask@ /must/
+--     not contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'
+--
+-- -   #VUID-VkImageSubresourceLayers-aspectMask-02247# @aspectMask@ /must/
+--     not include @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index
+--     /i/
+--
+-- -   #VUID-VkImageSubresourceLayers-layerCount-01700# @layerCount@ /must/
+--     be greater than 0
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageSubresourceLayers-aspectMask-parameter# @aspectMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
+--
+-- -   #VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask#
+--     @aspectMask@ /must/ not be @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'BufferImageCopy',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', 'ImageBlit',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
+-- 'ImageCopy',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
+-- 'ImageResolve',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2'
+data ImageSubresourceLayers = ImageSubresourceLayers
+  { -- | @aspectMask@ is a combination of
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits', selecting
+    -- the color, depth and\/or stencil aspects to be copied.
+    aspectMask :: ImageAspectFlags
+  , -- | @mipLevel@ is the mipmap level to copy
+    mipLevel :: Word32
+  , -- | @baseArrayLayer@ and @layerCount@ are the starting layer and number of
+    -- layers to copy.
+    baseArrayLayer :: Word32
+  , -- No documentation found for Nested "VkImageSubresourceLayers" "layerCount"
+    layerCount :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageSubresourceLayers)
+#endif
+deriving instance Show ImageSubresourceLayers
+
+instance ToCStruct ImageSubresourceLayers where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageSubresourceLayers{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (aspectMask)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (mipLevel)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (baseArrayLayer)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (layerCount)
+    f
+  cStructSize = 16
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageAspectFlags)) (zero)
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ImageSubresourceLayers where
+  peekCStruct p = do
+    aspectMask <- peek @ImageAspectFlags ((p `plusPtr` 0 :: Ptr ImageAspectFlags))
+    mipLevel <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    baseArrayLayer <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    layerCount <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    pure $ ImageSubresourceLayers
+             aspectMask mipLevel baseArrayLayer layerCount
+
+instance Storable ImageSubresourceLayers where
+  sizeOf ~_ = 16
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageSubresourceLayers where
+  zero = ImageSubresourceLayers
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkBufferCopy - Structure specifying a buffer copy operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBufferCopy-size-01988# The @size@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'cmdCopyBuffer'
+data BufferCopy = BufferCopy
+  { -- | @srcOffset@ is the starting offset in bytes from the start of
+    -- @srcBuffer@.
+    srcOffset :: DeviceSize
+  , -- | @dstOffset@ is the starting offset in bytes from the start of
+    -- @dstBuffer@.
+    dstOffset :: DeviceSize
+  , -- | @size@ is the number of bytes to copy.
+    size :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferCopy)
+#endif
+deriving instance Show BufferCopy
+
+instance ToCStruct BufferCopy where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferCopy{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (srcOffset)
+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (dstOffset)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct BufferCopy where
+  peekCStruct p = do
+    srcOffset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))
+    dstOffset <- peek @DeviceSize ((p `plusPtr` 8 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ BufferCopy
+             srcOffset dstOffset size
+
+instance Storable BufferCopy where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BufferCopy where
+  zero = BufferCopy
+           zero
+           zero
+           zero
+
+
+-- | VkImageCopy - Structure specifying an image copy operation
+--
+-- = Description
+--
+-- For 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' images, copies are
+-- performed slice by slice starting with the @z@ member of the @srcOffset@
+-- or @dstOffset@, and copying @depth@ slices. For images with multiple
+-- layers, copies are performed layer by layer starting with the
+-- @baseArrayLayer@ member of the @srcSubresource@ or @dstSubresource@ and
+-- copying @layerCount@ layers. Image data /can/ be copied between images
+-- with different image types. If one image is
+-- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D' and the other image is
+-- 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' with multiple layers, then
+-- each slice is copied to or from a different layer.
+--
+-- Copies involving a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
+-- specify the region to be copied in terms of the /plane/ to be copied,
+-- not the coordinates of the multi-planar image. This means that copies
+-- accessing the R\/B planes of “@_422@” format images /must/ fit the
+-- copied region within half the @width@ of the parent image, and that
+-- copies accessing the R\/B planes of “@_420@” format images /must/ fit
+-- the copied region within half the @width@ and @height@ of the parent
+-- image.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageCopy-extent-00140# The number of slices of the @extent@
+--     (for 3D) or layers of the @srcSubresource@ (for non-3D) /must/ match
+--     the number of slices of the @extent@ (for 3D) or layers of the
+--     @dstSubresource@ (for non-3D)
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageCopy-srcSubresource-parameter# @srcSubresource@ /must/
+--     be a valid 'ImageSubresourceLayers' structure
+--
+-- -   #VUID-VkImageCopy-dstSubresource-parameter# @dstSubresource@ /must/
+--     be a valid 'ImageSubresourceLayers' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyImage'
+data ImageCopy = ImageCopy
+  { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers'
+    -- structures specifying the image subresources of the images used for the
+    -- source and destination image data, respectively.
+    srcSubresource :: ImageSubresourceLayers
+  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
+    -- in texels of the sub-regions of the source and destination image data.
+    srcOffset :: Offset3D
+  , -- No documentation found for Nested "VkImageCopy" "dstSubresource"
+    dstSubresource :: ImageSubresourceLayers
+  , -- No documentation found for Nested "VkImageCopy" "dstOffset"
+    dstOffset :: Offset3D
+  , -- | @extent@ is the size in texels of the image to copy in @width@, @height@
+    -- and @depth@.
+    extent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageCopy)
+#endif
+deriving instance Show ImageCopy
+
+instance ToCStruct ImageCopy where
+  withCStruct x f = allocaBytes 68 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageCopy{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)
+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset)
+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource)
+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset)
+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (extent)
+    f
+  cStructSize = 68
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct ImageCopy where
+  peekCStruct p = do
+    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))
+    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D))
+    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers))
+    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D))
+    extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D))
+    pure $ ImageCopy
+             srcSubresource srcOffset dstSubresource dstOffset extent
+
+instance Storable ImageCopy where
+  sizeOf ~_ = 68
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageCopy where
+  zero = ImageCopy
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkImageBlit - Structure specifying an image blit operation
+--
+-- = Description
+--
+-- For each element of the @pRegions@ array, a blit operation is performed
+-- for the specified source and destination regions.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageBlit-aspectMask-00238# The @aspectMask@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ match
+--
+-- -   #VUID-VkImageBlit-layerCount-00239# The @layerCount@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ match
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageBlit-srcSubresource-parameter# @srcSubresource@ /must/
+--     be a valid 'ImageSubresourceLayers' structure
+--
+-- -   #VUID-VkImageBlit-dstSubresource-parameter# @dstSubresource@ /must/
+--     be a valid 'ImageSubresourceLayers' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ImageSubresourceLayers', 'Vulkan.Core10.FundamentalTypes.Offset3D',
+-- 'cmdBlitImage'
+data ImageBlit = ImageBlit
+  { -- | @srcSubresource@ is the subresource to blit from.
+    srcSubresource :: ImageSubresourceLayers
+  , -- | @srcOffsets@ is a pointer to an array of two
+    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
+    -- bounds of the source region within @srcSubresource@.
+    srcOffsets :: (Offset3D, Offset3D)
+  , -- | @dstSubresource@ is the subresource to blit into.
+    dstSubresource :: ImageSubresourceLayers
+  , -- | @dstOffsets@ is a pointer to an array of two
+    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
+    -- bounds of the destination region within @dstSubresource@.
+    dstOffsets :: (Offset3D, Offset3D)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageBlit)
+#endif
+deriving instance Show ImageBlit
+
+instance ToCStruct ImageBlit where
+  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageBlit{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)
+    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))
+    case (srcOffsets) of
+      (e0, e1) -> do
+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    poke ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (dstSubresource)
+    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))
+    case (dstOffsets) of
+      (e0, e1) -> do
+        poke (pDstOffsets' :: Ptr Offset3D) (e0)
+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    f
+  cStructSize = 80
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)
+    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))
+    case ((zero, zero)) of
+      (e0, e1) -> do
+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    poke ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers)) (zero)
+    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))
+    case ((zero, zero)) of
+      (e0, e1) -> do
+        poke (pDstOffsets' :: Ptr Offset3D) (e0)
+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    f
+
+instance FromCStruct ImageBlit where
+  peekCStruct p = do
+    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))
+    let psrcOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 16 :: Ptr (FixedArray 2 Offset3D)))
+    srcOffsets0 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
+    srcOffsets1 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
+    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 40 :: Ptr ImageSubresourceLayers))
+    let pdstOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 56 :: Ptr (FixedArray 2 Offset3D)))
+    dstOffsets0 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
+    dstOffsets1 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
+    pure $ ImageBlit
+             srcSubresource ((srcOffsets0, srcOffsets1)) dstSubresource ((dstOffsets0, dstOffsets1))
+
+instance Storable ImageBlit where
+  sizeOf ~_ = 80
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageBlit where
+  zero = ImageBlit
+           zero
+           (zero, zero)
+           zero
+           (zero, zero)
+
+
+-- | VkBufferImageCopy - Structure specifying a buffer image copy operation
+--
+-- = Description
+--
+-- When copying to or from a depth or stencil aspect, the data in buffer
+-- memory uses a layout that is a (mostly) tightly packed representation of
+-- the depth or stencil data. Specifically:
+--
+-- -   data copied to or from the stencil aspect of any depth\/stencil
+--     format is tightly packed with one
+--     'Vulkan.Core10.Enums.Format.FORMAT_S8_UINT' value per texel.
+--
+-- -   data copied to or from the depth aspect of a
+--     'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM' or
+--     'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM_S8_UINT' format is
+--     tightly packed with one
+--     'Vulkan.Core10.Enums.Format.FORMAT_D16_UNORM' value per texel.
+--
+-- -   data copied to or from the depth aspect of a
+--     'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT' or
+--     'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT_S8_UINT' format is
+--     tightly packed with one
+--     'Vulkan.Core10.Enums.Format.FORMAT_D32_SFLOAT' value per texel.
+--
+-- -   data copied to or from the depth aspect of a
+--     'Vulkan.Core10.Enums.Format.FORMAT_X8_D24_UNORM_PACK32' or
+--     'Vulkan.Core10.Enums.Format.FORMAT_D24_UNORM_S8_UINT' format is
+--     packed with one 32-bit word per texel with the D24 value in the LSBs
+--     of the word, and undefined values in the eight MSBs.
+--
+-- Note
+--
+-- To copy both the depth and stencil aspects of a depth\/stencil format,
+-- two entries in @pRegions@ /can/ be used, where one specifies the depth
+-- aspect in @imageSubresource@, and the other specifies the stencil
+-- aspect.
+--
+-- Because depth or stencil aspect buffer to image copies /may/ require
+-- format conversions on some implementations, they are not supported on
+-- queues that do not support graphics.
+--
+-- When copying to a depth aspect, and the
+-- @VK_EXT_depth_range_unrestricted@ extension is not enabled, the data in
+-- buffer memory /must/ be in the range [0,1], or the resulting values are
+-- undefined.
+--
+-- Copies are done layer by layer starting with image layer
+-- @baseArrayLayer@ member of @imageSubresource@. @layerCount@ layers are
+-- copied from the source image or to the destination image.
+--
+-- For purpose of valid usage statements here and in related copy commands,
+-- a /blocked image/ is defined as:
+--
+-- -   an image with a /single-plane/, “@_422@” format, which is treated as
+--     a format with a 2 × 1 compressed texel block, or
+--
+-- -   a compressed image.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBufferImageCopy-bufferRowLength-00195# @bufferRowLength@
+--     /must/ be @0@, or greater than or equal to the @width@ member of
+--     @imageExtent@
+--
+-- -   #VUID-VkBufferImageCopy-bufferImageHeight-00196# @bufferImageHeight@
+--     /must/ be @0@, or greater than or equal to the @height@ member of
+--     @imageExtent@
+--
+-- -   #VUID-VkBufferImageCopy-aspectMask-00212# The @aspectMask@ member of
+--     @imageSubresource@ /must/ only have a single bit set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBufferImageCopy-imageSubresource-parameter#
+--     @imageSubresource@ /must/ be a valid 'ImageSubresourceLayers'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdCopyBufferToImage',
+-- 'cmdCopyImageToBuffer'
+data BufferImageCopy = BufferImageCopy
+  { -- | @bufferOffset@ is the offset in bytes from the start of the buffer
+    -- object where the image data is copied from or to.
+    bufferOffset :: DeviceSize
+  , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion
+    -- of a larger two- or three-dimensional image in buffer memory, and
+    -- control the addressing calculations. If either of these values is zero,
+    -- that aspect of the buffer memory is considered to be tightly packed
+    -- according to the @imageExtent@.
+    bufferRowLength :: Word32
+  , -- No documentation found for Nested "VkBufferImageCopy" "bufferImageHeight"
+    bufferImageHeight :: Word32
+  , -- | @imageSubresource@ is a 'ImageSubresourceLayers' used to specify the
+    -- specific image subresources of the image used for the source or
+    -- destination image data.
+    imageSubresource :: ImageSubresourceLayers
+  , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the
+    -- sub-region of the source or destination image data.
+    imageOffset :: Offset3D
+  , -- | @imageExtent@ is the size in texels of the image to copy in @width@,
+    -- @height@ and @depth@.
+    imageExtent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferImageCopy)
+#endif
+deriving instance Show BufferImageCopy
+
+instance ToCStruct BufferImageCopy where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferImageCopy{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (bufferOffset)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (bufferRowLength)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (bufferImageHeight)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (imageSubresource)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (imageOffset)
+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (imageExtent)
+    f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 12 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct BufferImageCopy where
+  peekCStruct p = do
+    bufferOffset <- peek @DeviceSize ((p `plusPtr` 0 :: Ptr DeviceSize))
+    bufferRowLength <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
+    bufferImageHeight <- peek @Word32 ((p `plusPtr` 12 :: Ptr Word32))
+    imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
+    imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
+    imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 44 :: Ptr Extent3D))
+    pure $ BufferImageCopy
+             bufferOffset bufferRowLength bufferImageHeight imageSubresource imageOffset imageExtent
+
+instance Storable BufferImageCopy where
+  sizeOf ~_ = 56
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BufferImageCopy where
+  zero = BufferImageCopy
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkImageResolve - Structure specifying an image resolve operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageResolve-aspectMask-00266# The @aspectMask@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ only contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkImageResolve-layerCount-00267# The @layerCount@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ match
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageResolve-srcSubresource-parameter# @srcSubresource@
+--     /must/ be a valid 'ImageSubresourceLayers' structure
+--
+-- -   #VUID-VkImageResolve-dstSubresource-parameter# @dstSubresource@
+--     /must/ be a valid 'ImageSubresourceLayers' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D', 'ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'cmdResolveImage'
+data ImageResolve = ImageResolve
+  { -- | @srcSubresource@ and @dstSubresource@ are 'ImageSubresourceLayers'
+    -- structures specifying the image subresources of the images used for the
+    -- source and destination image data, respectively. Resolve of
+    -- depth\/stencil images is not supported.
+    srcSubresource :: ImageSubresourceLayers
+  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
+    -- in texels of the sub-regions of the source and destination image data.
+    srcOffset :: Offset3D
+  , -- No documentation found for Nested "VkImageResolve" "dstSubresource"
+    dstSubresource :: ImageSubresourceLayers
+  , -- No documentation found for Nested "VkImageResolve" "dstOffset"
+    dstOffset :: Offset3D
+  , -- | @extent@ is the size in texels of the source image to resolve in
+    -- @width@, @height@ and @depth@.
+    extent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageResolve)
+#endif
+deriving instance Show ImageResolve
+
+instance ToCStruct ImageResolve where
+  withCStruct x f = allocaBytes 68 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageResolve{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (srcSubresource)
+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (srcOffset)
+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (dstSubresource)
+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (dstOffset)
+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (extent)
+    f
+  cStructSize = 68
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct ImageResolve where
+  peekCStruct p = do
+    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 0 :: Ptr ImageSubresourceLayers))
+    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 16 :: Ptr Offset3D))
+    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 28 :: Ptr ImageSubresourceLayers))
+    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 44 :: Ptr Offset3D))
+    extent <- peekCStruct @Extent3D ((p `plusPtr` 56 :: Ptr Extent3D))
+    pure $ ImageResolve
+             srcSubresource srcOffset dstSubresource dstOffset extent
+
+instance Storable ImageResolve where
+  sizeOf ~_ = 68
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageResolve where
+  zero = ImageResolve
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkRenderPassBeginInfo - Structure specifying render pass begin
+-- information
+--
+-- = Description
+--
+-- @renderArea@ is the render area that is affected by the render pass
+-- instance. The effects of attachment load, store and multisample resolve
+-- operations are restricted to the pixels whose x and y coordinates fall
+-- within the render area on all attachments. The render area extends to
+-- all layers of @framebuffer@. The application /must/ ensure (using
+-- scissor if necessary) that all rendering is contained within the render
+-- area. The render area, after any transform specified by
+-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@
+-- is applied, /must/ be contained within the framebuffer dimensions.
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>
+-- is enabled, then @renderArea@ /must/ equal the framebuffer
+-- pre-transformed dimensions. After @renderArea@ has been transformed by
+-- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@,
+-- the resulting render area /must/ be equal to the framebuffer dimensions.
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subpassShading subpass shading>
+-- is enabled, then @renderArea@ /must/ equal the framebuffer dimensions.
+--
+-- When multiview is enabled, the resolve operation at the end of a subpass
+-- applies to all views in the view mask.
+--
+-- Note
+--
+-- There /may/ be a performance cost for using a render area smaller than
+-- the framebuffer, unless it matches the render area granularity for the
+-- render pass.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderPassBeginInfo-clearValueCount-00902# @clearValueCount@
+--     /must/ be greater than the largest attachment index in @renderPass@
+--     specifying a @loadOp@ (or @stencilLoadOp@, if the attachment has a
+--     depth\/stencil format) of
+--     'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'
+--
+-- -   #VUID-VkRenderPassBeginInfo-clearValueCount-04962# If
+--     @clearValueCount@ is not @0@, @pClearValues@ /must/ be a valid
+--     pointer to an array of @clearValueCount@ 'ClearValue' unions
+--
+-- -   #VUID-VkRenderPassBeginInfo-renderPass-00904# @renderPass@ /must/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility compatible>
+--     with the @renderPass@ member of the
+--     'Vulkan.Core10.Pass.FramebufferCreateInfo' structure specified when
+--     creating @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02850# If the @pNext@ chain does
+--     not contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0,
+--     @renderArea.offset.x@ /must/ be greater than or equal to 0
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02851# If the @pNext@ chain does
+--     not contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0,
+--     @renderArea.offset.y@ /must/ be greater than or equal to 0
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02852# If the @pNext@ chain does
+--     not contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0,
+--     @renderArea.offset.x@ + @renderArea.extent.width@ /must/ be less
+--     than or equal to 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@
+--     the @framebuffer@ was created with
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02853# If the @pNext@ chain does
+--     not contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0,
+--     @renderArea.offset.y@ + @renderArea.extent.height@ /must/ be less
+--     than or equal to
+--     'Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the
+--     @framebuffer@ was created with
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02856# If the @pNext@ chain
+--     contains
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
+--     @offset.x@ + @extent.width@ of each element of @pDeviceRenderAreas@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.Pass.FramebufferCreateInfo'::@width@ the
+--     @framebuffer@ was created with
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02857# If the @pNext@ chain
+--     contains
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
+--     @offset.y@ + @extent.height@ of each element of @pDeviceRenderAreas@
+--     /must/ be less than or equal to
+--     'Vulkan.Core10.Pass.FramebufferCreateInfo'::@height@ the
+--     @framebuffer@ was created with
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03207# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that did not include
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     and the @pNext@ chain includes a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure, its @attachmentCount@ /must/ be zero
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03208# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     the @attachmentCount@ of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be equal to the value
+--     of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@attachmentImageInfoCount@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-02780# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ have been created on
+--     the same 'Vulkan.Core10.Handles.Device' as @framebuffer@ and
+--     @renderPass@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03209# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' of an image created with a value
+--     of 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ equal to the
+--     @flags@ member of the corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-04627# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-inherited-usage an inherited usage>
+--     equal to the @usage@ member of the corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03211# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' with a width equal to the @width@
+--     member of the corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03212# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' with a height equal to the
+--     @height@ member of the corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03213# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' of an image created with a value
+--     of
+--     'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@subresourceRange.layerCount@
+--     equal to the @layerCount@ member of the corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03214# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' of an image created with a value
+--     of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@viewFormatCount@
+--     equal to the @viewFormatCount@ member of the corresponding element
+--     of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03215# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' of an image created with a set of
+--     elements in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
+--     equal to the set of elements in the @pViewFormats@ member of the
+--     corresponding element of
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'::@pAttachmentImageInfos@
+--     used to create @framebuffer@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03216# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' of an image created with a value
+--     of 'Vulkan.Core10.ImageView.ImageViewCreateInfo'::@format@ equal to
+--     the corresponding value of
+--     'Vulkan.Core10.Pass.AttachmentDescription'::@format@ in @renderPass@
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-03217# If @framebuffer@ was
+--     created with a 'Vulkan.Core10.Pass.FramebufferCreateInfo'::@flags@
+--     value that included
+--     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
+--     each element of the @pAttachments@ member of a
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo'
+--     structure included in the @pNext@ chain /must/ be a
+--     'Vulkan.Core10.Handles.ImageView' of an image created with a value
+--     of 'Vulkan.Core10.Image.ImageCreateInfo'::@samples@ equal to the
+--     corresponding value of
+--     'Vulkan.Core10.Pass.AttachmentDescription'::@samples@ in
+--     @renderPass@
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02869# If the @pNext@ chain
+--     includes
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
+--     @renderArea.offset@ /must/ equal (0,0)
+--
+-- -   #VUID-VkRenderPassBeginInfo-pNext-02870# If the @pNext@ chain
+--     includes
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
+--     @renderArea.extent@ transformed by
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'::@transform@
+--     /must/ equal the @framebuffer@ dimensions
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderPassBeginInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO'
+--
+-- -   #VUID-VkRenderPassBeginInfo-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.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
+--     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',
+--     'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',
+--     or
+--     'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM'
+--
+-- -   #VUID-VkRenderPassBeginInfo-sType-unique# The @sType@ value of each
+--     struct in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkRenderPassBeginInfo-renderPass-parameter# @renderPass@
+--     /must/ be a valid 'Vulkan.Core10.Handles.RenderPass' handle
+--
+-- -   #VUID-VkRenderPassBeginInfo-framebuffer-parameter# @framebuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Framebuffer' handle
+--
+-- -   #VUID-VkRenderPassBeginInfo-commonparent# Both of @framebuffer@, and
+--     @renderPass@ /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_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ClearValue', 'Vulkan.Core10.Handles.Framebuffer',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D',
+-- 'Vulkan.Core10.Handles.RenderPass',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBeginRenderPass',
+-- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',
+-- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR'
+data RenderPassBeginInfo (es :: [Type]) = RenderPassBeginInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @renderPass@ is the render pass to begin an instance of.
+    renderPass :: RenderPass
+  , -- | @framebuffer@ is the framebuffer containing the attachments that are
+    -- used with the render pass.
+    framebuffer :: Framebuffer
+  , -- | @renderArea@ is the render area that is affected by the render pass
+    -- instance, and is described in more detail below.
+    renderArea :: Rect2D
+  , -- | @pClearValues@ is a pointer to an array of @clearValueCount@
+    -- 'ClearValue' structures containing clear values for each attachment, if
+    -- the attachment uses a @loadOp@ value of
+    -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR' or if
+    -- the attachment has a depth\/stencil format and uses a @stencilLoadOp@
+    -- value of
+    -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'. The
+    -- array is indexed by attachment number. Only elements corresponding to
+    -- cleared attachments are used. Other elements of @pClearValues@ are
+    -- ignored.
+    clearValues :: Vector ClearValue
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderPassBeginInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (RenderPassBeginInfo es)
+
+instance Extensible RenderPassBeginInfo where
+  extensibleTypeName = "RenderPassBeginInfo"
+  setNext RenderPassBeginInfo{..} next' = RenderPassBeginInfo{next = next', ..}
+  getNext RenderPassBeginInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderPassBeginInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @RenderPassTransformBeginInfoQCOM = Just f
+    | Just Refl <- eqT @e @RenderPassAttachmentBeginInfo = Just f
+    | Just Refl <- eqT @e @RenderPassSampleLocationsBeginInfoEXT = Just f
+    | Just Refl <- eqT @e @DeviceGroupRenderPassBeginInfo = Just f
+    | otherwise = Nothing
+
+instance (Extendss RenderPassBeginInfo es, PokeChain es) => ToCStruct (RenderPassBeginInfo es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderPassBeginInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (renderPass)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (framebuffer)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (renderArea)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (clearValues)) :: Word32))
+    pPClearValues' <- ContT $ allocaBytes @ClearValue ((Data.Vector.length (clearValues)) * 16)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPClearValues' `plusPtr` (16 * (i)) :: Ptr ClearValue) (e) . ($ ())) (clearValues)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr ClearValue))) (pPClearValues')
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr RenderPass)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Framebuffer)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Rect2D)) (zero)
+    lift $ f
+
+instance es ~ '[] => Zero (RenderPassBeginInfo es) where
+  zero = RenderPassBeginInfo
+           ()
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkClearDepthStencilValue - Structure specifying a clear depth stencil
+-- value
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkClearDepthStencilValue-depth-00022# Unless the
+--     @VK_EXT_depth_range_unrestricted@ extension is enabled @depth@
+--     /must/ be between @0.0@ and @1.0@, inclusive
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ClearValue', 'cmdClearDepthStencilImage'
+data ClearDepthStencilValue = ClearDepthStencilValue
+  { -- | @depth@ is the clear value for the depth aspect of the depth\/stencil
+    -- attachment. It is a floating-point value which is automatically
+    -- converted to the attachment’s format.
+    depth :: Float
+  , -- | @stencil@ is the clear value for the stencil aspect of the
+    -- depth\/stencil attachment. It is a 32-bit integer value which is
+    -- converted to the attachment’s format by taking the appropriate number of
+    -- LSBs.
+    stencil :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ClearDepthStencilValue)
+#endif
+deriving instance Show ClearDepthStencilValue
+
+instance ToCStruct ClearDepthStencilValue where
+  withCStruct x f = allocaBytes 8 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ClearDepthStencilValue{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (depth))
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (stencil)
+    f
+  cStructSize = 8
+  cStructAlignment = 4
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr CFloat)) (CFloat (zero))
+    poke ((p `plusPtr` 4 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct ClearDepthStencilValue where
+  peekCStruct p = do
+    depth <- peek @CFloat ((p `plusPtr` 0 :: Ptr CFloat))
+    stencil <- peek @Word32 ((p `plusPtr` 4 :: Ptr Word32))
+    pure $ ClearDepthStencilValue
+             (coerce @CFloat @Float depth) stencil
+
+instance Storable ClearDepthStencilValue where
+  sizeOf ~_ = 8
+  alignment ~_ = 4
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ClearDepthStencilValue where
+  zero = ClearDepthStencilValue
+           zero
+           zero
+
+
+-- | VkClearAttachment - Structure specifying a clear attachment
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkClearAttachment-aspectMask-00019# If @aspectMask@ includes
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', it
+--     /must/ not include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkClearAttachment-aspectMask-00020# @aspectMask@ /must/ not
+--     include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_METADATA_BIT'
+--
+-- -   #VUID-VkClearAttachment-aspectMask-02246# @aspectMask@ /must/ not
+--     include @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ for any index /i/
+--
+-- -   #VUID-VkClearAttachment-clearValue-00021# @clearValue@ /must/ be a
+--     valid 'ClearValue' union
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkClearAttachment-aspectMask-parameter# @aspectMask@ /must/ be
+--     a valid combination of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' values
+--
+-- -   #VUID-VkClearAttachment-aspectMask-requiredbitmask# @aspectMask@
+--     /must/ not be @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
+-- 'ClearValue',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
+-- 'cmdClearAttachments'
+data ClearAttachment = ClearAttachment
+  { -- | @aspectMask@ is a mask selecting the color, depth and\/or stencil
+    -- aspects of the attachment to be cleared.
+    aspectMask :: ImageAspectFlags
+  , -- | @colorAttachment@ is only meaningful if
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' is set
+    -- in @aspectMask@, in which case it is an index into the currently bound
+    -- color attachments.
+    colorAttachment :: Word32
+  , -- | @clearValue@ is the color or depth\/stencil value to clear the
+    -- attachment to, as described in
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears-values Clear Values>
     -- below.
     clearValue :: ClearValue
   }
diff --git a/src/Vulkan/Core10/CommandPool.hs b/src/Vulkan/Core10/CommandPool.hs
--- a/src/Vulkan/Core10/CommandPool.hs
+++ b/src/Vulkan/Core10/CommandPool.hs
@@ -128,7 +128,7 @@
                      -- specifying the state of the command pool object.
                      CommandPoolCreateInfo
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io (CommandPool)
@@ -177,17 +177,17 @@
 --
 -- Any primary command buffer allocated from another
 -- 'Vulkan.Core10.Handles.CommandPool' that is in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has a secondary command buffer allocated from @commandPool@ recorded
 -- into it, becomes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkDestroyCommandPool-commandPool-00041# All
 --     'Vulkan.Core10.Handles.CommandBuffer' objects allocated from
 --     @commandPool@ /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkDestroyCommandPool-commandPool-00042# If
 --     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
@@ -232,7 +232,7 @@
                    -> -- | @commandPool@ is the handle of the command pool to destroy.
                       CommandPool
                    -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                       -- chapter.
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io ()
@@ -263,21 +263,21 @@
 -- command buffers allocated from the command pool back to the command
 -- pool. All command buffers that have been allocated from the command pool
 -- are put in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
 --
 -- Any primary command buffer allocated from another
 -- 'Vulkan.Core10.Handles.CommandPool' that is in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>
 -- and has a secondary command buffer allocated from @commandPool@ recorded
 -- into it, becomes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkResetCommandPool-commandPool-00040# All
 --     'Vulkan.Core10.Handles.CommandBuffer' objects allocated from
 --     @commandPool@ /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- == Valid Usage (Implicit)
 --
@@ -369,7 +369,7 @@
     -- from it.
     flags :: CommandPoolCreateFlags
   , -- | @queueFamilyIndex@ designates a queue family as described in section
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queueprops Queue Family Properties>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-queueprops Queue Family Properties>.
     -- All command buffers allocated from this command pool /must/ be submitted
     -- on queues from the same queue family.
     queueFamilyIndex :: Word32
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
@@ -83,7 +83,7 @@
 import Vulkan.Core10.Handles (DescriptorPool)
 import Vulkan.Core10.Handles (DescriptorPool(..))
 import Vulkan.Core10.Enums.DescriptorPoolCreateFlagBits (DescriptorPoolCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfo)
 import Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags)
 import Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags(..))
 import Vulkan.Core10.Handles (DescriptorSet)
@@ -126,7 +126,7 @@
 import Vulkan.Exception (VulkanException(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (WriteDescriptorSetAccelerationStructureKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_ray_tracing (WriteDescriptorSetAccelerationStructureNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlockEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlock)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_DESCRIPTOR_SET))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO))
@@ -195,7 +195,7 @@
                              -- structure specifying the state of the descriptor set layout object.
                              (DescriptorSetLayoutCreateInfo a)
                           -> -- | @pAllocator@ controls host memory allocation as described in the
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                             -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                              -- chapter.
                              ("allocator" ::: Maybe AllocationCallbacks)
                           -> io (DescriptorSetLayout)
@@ -286,7 +286,7 @@
                            -> -- | @descriptorSetLayout@ is the descriptor set layout to destroy.
                               DescriptorSetLayout
                            -> -- | @pAllocator@ controls host memory allocation as described in the
-                              -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                              -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                               -- chapter.
                               ("allocator" ::: Maybe AllocationCallbacks)
                            -> io ()
@@ -360,7 +360,7 @@
                         -- specifying the state of the descriptor pool object.
                         (DescriptorPoolCreateInfo a)
                      -> -- | @pAllocator@ controls host memory allocation as described in the
-                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                         -- chapter.
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (DescriptorPool)
@@ -459,7 +459,7 @@
                       -> -- | @descriptorPool@ is the descriptor pool to destroy.
                          DescriptorPool
                       -> -- | @pAllocator@ controls host memory allocation as described in the
-                         -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                         -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                          -- chapter.
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io ()
@@ -570,18 +570,18 @@
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'
 --     bit set, all descriptors in that binding that are dynamically used
 --     /must/ have been populated before the descriptor set is
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-binding consumed>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-binding consumed>.
 --
 -- -   For descriptor set bindings created without the
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT'
 --     bit set, all descriptors in that binding that are statically used
 --     /must/ have been populated before the descriptor set is
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-binding consumed>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-binding consumed>.
 --
 -- -   Descriptor bindings with descriptor type of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     /can/ be undefined when the descriptor set is
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-binding consumed>;
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-binding consumed>;
 --     though values in that block will be undefined.
 --
 -- -   Entries that are not used by a pipeline /can/ have undefined
@@ -601,7 +601,7 @@
 -- Additionally, the allocation /may/ also fail if a call to
 -- 'allocateDescriptorSets' would cause the total number of inline uniform
 -- block bindings allocated from the pool to exceed the value of
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT'::@maxInlineUniformBlockBindings@
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo'::@maxInlineUniformBlockBindings@
 -- used to create the descriptor pool.
 --
 -- If the allocation fails due to no more space in the descriptor pool, and
@@ -808,14 +808,14 @@
 -- If the @dstSet@ member of any element of @pDescriptorWrites@ or
 -- @pDescriptorCopies@ is bound, accessed, or modified by any command that
 -- was recorded to a command buffer which is currently in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording or executable state>,
 -- and any of the descriptor bindings that are updated were not created
 -- with the
 -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
 -- or
 -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'
 -- bits set, that command buffer becomes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid>.
 --
 -- == Valid Usage
 --
@@ -891,7 +891,7 @@
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT'
 --     bits set /must/ not be used by any command that was recorded to a
 --     command buffer which is in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- == Valid Usage (Implicit)
 --
@@ -955,9 +955,9 @@
 -- When setting @range@ to 'Vulkan.Core10.APIConstants.WHOLE_SIZE', the
 -- effective range /must/ not be larger than the maximum range for the
 -- descriptor type
--- (<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxUniformBufferRange maxUniformBufferRange>
+-- (<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxUniformBufferRange maxUniformBufferRange>
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxStorageBufferRange maxStorageBufferRange>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxStorageBufferRange maxStorageBufferRange>).
 -- This means that 'Vulkan.Core10.APIConstants.WHOLE_SIZE' is not typically
 -- useful in the common case where uniform buffer descriptors are
 -- suballocated from a buffer that is much larger than
@@ -985,7 +985,7 @@
 --     or equal to the size of @buffer@ minus @offset@
 --
 -- -   #VUID-VkDescriptorBufferInfo-buffer-02998# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, @buffer@ /must/ not be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -1082,11 +1082,11 @@
 --     match the actual 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' of
 --     each subresource accessible from @imageView@ at the time this
 --     descriptor is accessed as defined by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-layouts-matching-rule image layout matching rules>
 --
 -- -   #VUID-VkDescriptorImageInfo-sampler-01564# If @sampler@ is used and
 --     the 'Vulkan.Core10.Enums.Format.Format' of the image is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
 --     the image /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',
 --     and the @aspectMask@ of the @imageView@ /must/ be
@@ -1191,10 +1191,10 @@
 -- is used according to the descriptor type specified in the
 -- @descriptorType@ member of the containing 'WriteDescriptorSet'
 -- structure, or none of them in case @descriptorType@ is
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 -- in which case the source data for the descriptor writes is taken from
 -- the
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock'
 -- structure included in the @pNext@ chain of 'WriteDescriptorSet', or if
 -- @descriptorType@ is
 -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR',
@@ -1211,7 +1211,7 @@
 -- below.
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 -- feature is enabled, the buffer, acceleration structure, imageView, or
 -- bufferView /can/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE'. Loads from
 -- a null descriptor return zero values and stores and atomics to a null
@@ -1236,7 +1236,7 @@
 -- Note
 --
 -- The same behavior applies to bindings with a descriptor type of
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 -- where @descriptorCount@ specifies the number of bytes to update while
 -- @dstArrayElement@ specifies the starting byte offset, thus in this case
 -- if the @dstBinding@ has a smaller byte size than the sum of
@@ -1275,16 +1275,16 @@
 --     to the number of array elements in the descriptor set binding
 --     specified by @dstBinding@, and all applicable consecutive bindings,
 --     as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02219# If @descriptorType@
 --     is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     @dstArrayElement@ /must/ be an integer multiple of @4@
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02220# If @descriptorType@
 --     is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     @descriptorCount@ /must/ be an integer multiple of @4@
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02994# If @descriptorType@
@@ -1302,7 +1302,7 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, each element of @pTexelBufferView@ /must/
 --     not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -1343,15 +1343,15 @@
 --     or
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, the @imageView@ member of each element of
 --     @pImageInfo@ /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02221# If @descriptorType@
 --     is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     the @pNext@ chain /must/ include a
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock'
 --     structure whose @dataSize@ member equals @descriptorCount@
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-02382# If @descriptorType@
@@ -1398,7 +1398,7 @@
 --     samplers for @dstBinding@, then the @imageView@ member of each
 --     element of @pImageInfo@ which corresponds to an immutable sampler
 --     that enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     /must/ have been created with a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --     structure in its @pNext@ chain with an /identically defined/
@@ -1515,28 +1515,28 @@
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_SAMPLED_IMAGE'
 --     the @imageLayout@ member of each element of @pImageInfo@ /must/ be a
 --     member of the list given in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage Sampled Image>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage Sampled Image>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-04150# If @descriptorType@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER'
 --     the @imageLayout@ member of each element of @pImageInfo@ /must/ be a
 --     member of the list given in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler Combined Image Sampler>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler Combined Image Sampler>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-04151# If @descriptorType@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INPUT_ATTACHMENT'
 --     the @imageLayout@ member of each element of @pImageInfo@ /must/ be a
 --     member of the list given in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment Input Attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inputattachment Input Attachment>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-04152# If @descriptorType@
 --     is
 --     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_IMAGE'
 --     the @imageLayout@ member of each element of @pImageInfo@ /must/ be a
 --     member of the list given in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage Storage Image>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage Storage Image>
 --
 -- -   #VUID-VkWriteDescriptorSet-descriptorType-00338# If @descriptorType@
 --     is
@@ -1585,7 +1585,7 @@
 --     'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',
 --     'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',
 --     or
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock'
 --
 -- -   #VUID-VkWriteDescriptorSet-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique
@@ -1621,14 +1621,14 @@
   , -- | @dstArrayElement@ is the starting element in that array. If the
     -- descriptor binding identified by @dstSet@ and @dstBinding@ has a
     -- descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @dstArrayElement@ specifies the starting byte offset within the
     -- binding.
     dstArrayElement :: Word32
   , -- | @descriptorCount@ is the number of descriptors to update. If the
     -- descriptor binding identified by @dstSet@ and @dstBinding@ has a
     -- descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
     -- then @descriptorCount@ specifies the number of bytes to update.
     -- Otherwise, @descriptorCount@ is one of
     --
@@ -1639,7 +1639,7 @@
     -- -   the number of elements in @pTexelBufferView@
     --
     -- -   a value matching the @dataSize@ member of a
-    --     'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'
+    --     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock'
     --     structure in the @pNext@ chain
     --
     -- -   a value matching the @accelerationStructureCount@ of a
@@ -1665,7 +1665,7 @@
     bufferInfo :: Vector DescriptorBufferInfo
   , -- | @pTexelBufferView@ is a pointer to an array of
     -- 'Vulkan.Core10.Handles.BufferView' handles as described in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-buffer-views Buffer Views>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-buffer-views Buffer Views>
     -- section or is ignored, as described below.
     texelBufferView :: Vector BufferView
   }
@@ -1683,7 +1683,7 @@
   extends _ f
     | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureNV = Just f
     | Just Refl <- eqT @e @WriteDescriptorSetAccelerationStructureKHR = Just f
-    | Just Refl <- eqT @e @WriteDescriptorSetInlineUniformBlockEXT = Just f
+    | Just Refl <- eqT @e @WriteDescriptorSetInlineUniformBlock = Just f
     | otherwise = Nothing
 
 instance (Extendss WriteDescriptorSet es, PokeChain es) => ToCStruct (WriteDescriptorSet es) where
@@ -1808,7 +1808,7 @@
 --     to the number of array elements in the descriptor set binding
 --     specified by @srcBinding@, and all applicable consecutive bindings,
 --     as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
 --
 -- -   #VUID-VkCopyDescriptorSet-dstBinding-00347# @dstBinding@ /must/ be a
 --     valid binding within @dstSet@
@@ -1818,7 +1818,7 @@
 --     to the number of array elements in the descriptor set binding
 --     specified by @dstBinding@, and all applicable consecutive bindings,
 --     as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
 --
 -- -   #VUID-VkCopyDescriptorSet-dstBinding-02632# The type of @dstBinding@
 --     within @dstSet@ /must/ be equal to the type of @srcBinding@ within
@@ -1828,22 +1828,22 @@
 --     @dstSet@, then the source and destination ranges of descriptors
 --     /must/ not overlap, where the ranges /may/ include array elements
 --     from consecutive bindings as described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
 --
 -- -   #VUID-VkCopyDescriptorSet-srcBinding-02223# If the descriptor type
 --     of the descriptor set binding specified by @srcBinding@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     @srcArrayElement@ /must/ be an integer multiple of @4@
 --
 -- -   #VUID-VkCopyDescriptorSet-dstBinding-02224# If the descriptor type
 --     of the descriptor set binding specified by @dstBinding@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     @dstArrayElement@ /must/ be an integer multiple of @4@
 --
 -- -   #VUID-VkCopyDescriptorSet-srcBinding-02225# If the descriptor type
 --     of the descriptor set binding specified by either @srcBinding@ or
 --     @dstBinding@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     @descriptorCount@ /must/ be an integer multiple of @4@
 --
 -- -   #VUID-VkCopyDescriptorSet-srcSet-01918# If @srcSet@’s layout was
@@ -1940,7 +1940,7 @@
   { -- | @srcSet@, @srcBinding@, and @srcArrayElement@ are the source set,
     -- binding, and array element, respectively. If the descriptor binding
     -- identified by @srcSet@ and @srcBinding@ has a descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @srcArrayElement@ specifies the starting byte offset within the
     -- binding to copy from.
     srcSet :: DescriptorSet
@@ -1951,7 +1951,7 @@
   , -- | @dstSet@, @dstBinding@, and @dstArrayElement@ are the destination set,
     -- binding, and array element, respectively. If the descriptor binding
     -- identified by @dstSet@ and @dstBinding@ has a descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @dstArrayElement@ specifies the starting byte offset within the
     -- binding to copy to.
     dstSet :: DescriptorSet
@@ -1965,7 +1965,7 @@
     -- affect consecutive bindings in a manner similar to 'WriteDescriptorSet'
     -- above. If the descriptor binding identified by @srcSet@ and @srcBinding@
     -- has a descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @descriptorCount@ specifies the number of bytes to copy and the
     -- remaining array elements in the source or destination binding refer to
     -- the remaining number of bytes in those.
@@ -2088,20 +2088,20 @@
 --     of @descriptorCount@ valid 'Vulkan.Core10.Handles.Sampler' handles
 --
 -- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-04604# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inlineUniformBlock inlineUniformBlock>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-inlineUniformBlock inlineUniformBlock>
 --     feature is not enabled, @descriptorType@ /must/ not be
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --
 -- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-02209# If
 --     @descriptorType@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     then @descriptorCount@ /must/ be a multiple of @4@
 --
 -- -   #VUID-VkDescriptorSetLayoutBinding-descriptorType-02210# If
 --     @descriptorType@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     then @descriptorCount@ /must/ be less than or equal to
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxInlineUniformBlockSize@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxInlineUniformBlockSize@
 --
 -- -   #VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283# If
 --     @descriptorCount@ is not @0@, @stageFlags@ /must/ be a valid
@@ -2148,7 +2148,7 @@
     descriptorType :: DescriptorType
   , -- | @descriptorCount@ is the number of descriptors contained in the binding,
     -- accessed in a shader as an array, except if @descriptorType@ is
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- in which case @descriptorCount@ is the size in bytes of the inline
     -- uniform block. If @descriptorCount@ is zero this binding entry is
     -- reserved and the resource /must/ not be accessed from any stage via this
@@ -2251,7 +2251,7 @@
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR',
 --     then all elements of @pBindings@ /must/ not have a @descriptorType@
 --     of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --
 -- -   #VUID-VkDescriptorSetLayoutCreateInfo-flags-00281# If @flags@
 --     contains
@@ -2433,7 +2433,7 @@
 --     /must/ be greater than @0@
 --
 -- -   #VUID-VkDescriptorPoolSize-type-02218# If @type@ is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     then @descriptorCount@ /must/ be a multiple of @4@
 --
 -- == Valid Usage (Implicit)
@@ -2451,7 +2451,7 @@
     type' :: DescriptorType
   , -- | @descriptorCount@ is the number of descriptors of that type to allocate.
     -- If @type@ is
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @descriptorCount@ is the number of bytes to allocate for
     -- descriptors of this type.
     descriptorCount :: Word32
@@ -2617,7 +2617,7 @@
 -- -   #VUID-VkDescriptorPoolCreateInfo-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_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo'
 --     or
 --     'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.MutableDescriptorTypeCreateInfoVALVE'
 --
@@ -2670,7 +2670,7 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DescriptorPoolCreateInfo e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @MutableDescriptorTypeCreateInfoVALVE = Just f
-    | Just Refl <- eqT @e @DescriptorPoolInlineUniformBlockCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @DescriptorPoolInlineUniformBlockCreateInfo = Just f
     | otherwise = Nothing
 
 instance (Extendss DescriptorPoolCreateInfo es, PokeChain es) => ToCStruct (DescriptorPoolCreateInfo es) where
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
@@ -75,9 +75,9 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (DeviceDiagnosticsConfigCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation (DeviceGroupDeviceCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_memory_overallocation_behavior (DeviceMemoryOverallocationCreateInfoAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (DevicePrivateDataCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (DevicePrivateDataCreateInfo)
 import Vulkan.Core10.Enums.DeviceQueueCreateFlagBits (DeviceQueueCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority (DeviceQueueGlobalPriorityCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfoKHR)
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.CStruct.Extends (Extends)
 import Vulkan.CStruct.Extends (Extendss)
@@ -112,7 +112,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_generated_commands (PhysicalDeviceDeviceGeneratedCommandsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_device_memory_report (PhysicalDeviceDeviceMemoryReportFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostics_config (PhysicalDeviceDiagnosticsConfigFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
@@ -126,18 +126,18 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_fragment_shader_interlock (PhysicalDeviceFragmentShaderInterlockFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PhysicalDeviceFragmentShadingRateEnumsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority_query (PhysicalDeviceGlobalPriorityQueryFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_view_min_lod (PhysicalDeviceImageViewMinLodFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_invocation_mask (PhysicalDeviceInvocationMaskFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (PhysicalDeviceMaintenance4FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_mesh_shader (PhysicalDeviceMeshShaderFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_multi_draw (PhysicalDeviceMultiDrawFeaturesEXT)
@@ -145,13 +145,13 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_VALVE_mutable_descriptor_type (PhysicalDeviceMutableDescriptorTypeFeaturesVALVE)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pageable_device_local_memory (PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (PhysicalDevicePrivateDataFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_provoking_vertex (PhysicalDeviceProvokingVertexFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_rgba10x6_formats (PhysicalDeviceRGBA10X6FormatsFeaturesEXT)
@@ -168,23 +168,23 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_atomic_float (PhysicalDeviceShaderAtomicFloatFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64 (PhysicalDeviceShaderAtomicInt64Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingFeaturesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (PhysicalDeviceSynchronization2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout (PhysicalDeviceUniformBufferStandardLayoutFeatures)
@@ -193,11 +193,12 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state (PhysicalDeviceVertexInputDynamicStateFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
+import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Features)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
 import Vulkan.Core10.Handles (PhysicalDevice_T)
 import Vulkan.CStruct.Extends (PokeChain)
 import Vulkan.CStruct.Extends (PokeChain(..))
@@ -248,7 +249,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateDevice-ppEnabledExtensionNames-01387# All
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required device extensions>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required device extensions>
 --     for each extension in the
 --     'DeviceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be
 --     present in that list
@@ -301,13 +302,13 @@
              => -- | @physicalDevice@ /must/ be one of the device handles returned from a
                 -- call to 'Vulkan.Core10.DeviceInitialization.enumeratePhysicalDevices'
                 -- (see
-                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-physical-device-enumeration Physical Device Enumeration>).
+                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-physical-device-enumeration Physical Device Enumeration>).
                 PhysicalDevice
              -> -- | @pCreateInfo@ is a pointer to a 'DeviceCreateInfo' structure containing
                 -- information about how to create the device.
                 (DeviceCreateInfo a)
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io (Device)
@@ -407,7 +408,7 @@
               => -- | @device@ is the logical device to destroy.
                  Device
               -> -- | @pAllocator@ controls host memory allocation as described in the
-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                  -- chapter.
                  ("allocator" ::: Maybe AllocationCallbacks)
               -> io ()
@@ -444,7 +445,7 @@
 --     of @pQueuePriorities@ /must/ be between @0.0@ and @1.0@ inclusive
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-flags-02861# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-protectedMemory protected memory>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-protectedMemory protected memory>
 --     feature is not enabled, the
 --     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'
 --     bit of @flags@ /must/ not be set
@@ -462,7 +463,7 @@
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-pNext-pNext# @pNext@ /must/ be @NULL@
 --     or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_global_priority.DeviceQueueGlobalPriorityCreateInfoEXT'
+--     'Vulkan.Extensions.VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfoKHR'
 --
 -- -   #VUID-VkDeviceQueueCreateInfo-sType-unique# The @sType@ value of
 --     each struct in the @pNext@ chain /must/ be unique
@@ -499,7 +500,7 @@
   , -- | @pQueuePriorities@ is a pointer to an array of @queueCount@ normalized
     -- floating point values, specifying priorities of work that will be
     -- submitted to each created queue. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priority Queue Priority>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-priority Queue Priority>
     -- for more information.
     queuePriorities :: Vector Float
   }
@@ -515,7 +516,7 @@
   getNext DeviceQueueCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends DeviceQueueCreateInfo e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @DeviceQueueGlobalPriorityCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @DeviceQueueGlobalPriorityCreateInfoKHR = Just f
     | otherwise = Nothing
 
 instance (Extendss DeviceQueueCreateInfo es, PokeChain es) => ToCStruct (DeviceQueueCreateInfo es) where
@@ -669,6 +670,25 @@
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features'::@shaderOutputLayer@
 --     /must/ both be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
+-- -   #VUID-VkDeviceCreateInfo-pNext-06532# If the @pNext@ chain includes
+--     a 'Vulkan.Core13.PhysicalDeviceVulkan13Features' structure, then it
+--     /must/ not include a
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
+--     or
+--     'Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures'
+--     structure
+--
 -- -   #VUID-VkDeviceCreateInfo-pProperties-04451# If the
 --     @VK_KHR_portability_subset@ extension is included in @pProperties@
 --     of
@@ -677,63 +697,63 @@
 --     @\"VK_KHR_portability_subset\"@
 --
 -- -   #VUID-VkDeviceCreateInfo-shadingRateImage-04478# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-shadingRateImage-04479# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
 --     /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-shadingRateImage-04480# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-fragmentDensityMap-04481# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-fragmentDensityMap-04482# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
 --     /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-fragmentDensityMap-04483# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMap fragmentDensityMap>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     /must/ not be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-None-04896# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageInt64Atomics sparseImageInt64Atomics>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageInt64Atomics shaderImageInt64Atomics>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageInt64Atomics shaderImageInt64Atomics>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-None-04897# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageFloat32Atomics sparseImageFloat32Atomics>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageFloat32Atomics sparseImageFloat32Atomics>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageFloat32Atomics shaderImageFloat32Atomics>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageFloat32Atomics shaderImageFloat32Atomics>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-None-04898# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageFloat32AtomicAdd sparseImageFloat32AtomicAdd>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageFloat32AtomicAdd sparseImageFloat32AtomicAdd>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageFloat32AtomicAdd shaderImageFloat32AtomicAdd>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageFloat32AtomicAdd shaderImageFloat32AtomicAdd>
 --     /must/ be enabled
 --
 -- -   #VUID-VkDeviceCreateInfo-sparseImageFloat32AtomicMinMax-04975# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseImageFloat32AtomicMinMax sparseImageFloat32AtomicMinMax>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseImageFloat32AtomicMinMax sparseImageFloat32AtomicMinMax>
 --     is enabled,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderImageFloat32AtomicMinMax shaderImageFloat32AtomicMinMax>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderImageFloat32AtomicMinMax shaderImageFloat32AtomicMinMax>
 --     /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -748,7 +768,7 @@
 --     'Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigCreateInfoNV',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.DeviceGroupDeviceCreateInfo',
 --     'Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD',
---     'Vulkan.Extensions.VK_EXT_private_data.DevicePrivateDataCreateInfoEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_private_data.DevicePrivateDataCreateInfo',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_16bit_storage.PhysicalDevice16BitStorageFeatures',
 --     'Vulkan.Extensions.VK_EXT_4444_formats.PhysicalDevice4444FormatsFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_8bit_storage.PhysicalDevice8BitStorageFeatures',
@@ -773,7 +793,7 @@
 --     'Vulkan.Extensions.VK_NV_device_generated_commands.PhysicalDeviceDeviceGeneratedCommandsFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeaturesKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
@@ -786,18 +806,18 @@
 --     'Vulkan.Extensions.VK_EXT_fragment_shader_interlock.PhysicalDeviceFragmentShaderInterlockFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR',
---     'Vulkan.Extensions.VK_EXT_global_priority_query.PhysicalDeviceGlobalPriorityQueryFeaturesEXT',
+--     'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
 --     'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',
---     'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
 --     'Vulkan.Extensions.VK_EXT_image_view_min_lod.PhysicalDeviceImageViewMinLodFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
 --     'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures',
 --     'Vulkan.Extensions.VK_HUAWEI_invocation_mask.PhysicalDeviceInvocationMaskFeaturesHUAWEI',
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
---     'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4FeaturesKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
 --     'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
 --     'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawFeaturesEXT',
@@ -805,13 +825,13 @@
 --     'Vulkan.Extensions.VK_VALVE_mutable_descriptor_type.PhysicalDeviceMutableDescriptorTypeFeaturesVALVE',
 --     'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',
 --     'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
 --     'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR',
 --     'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
---     'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures',
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
 --     'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_rgba10x6_formats.PhysicalDeviceRGBA10X6FormatsFeaturesEXT',
@@ -828,23 +848,23 @@
 --     'Vulkan.Extensions.VK_EXT_shader_atomic_float.PhysicalDeviceShaderAtomicFloatFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',
 --     'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
---     'Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
 --     'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',
 --     'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
---     'Vulkan.Extensions.VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeaturesKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeatures',
 --     'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',
 --     'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
 --     'Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow.PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',
---     'Vulkan.Extensions.VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeaturesKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
 --     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingFeaturesHUAWEI',
---     'Vulkan.Extensions.VK_KHR_synchronization2.PhysicalDeviceSynchronization2FeaturesKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
 --     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
---     'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
@@ -853,19 +873,20 @@
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.PhysicalDeviceVertexInputDynamicStateFeaturesEXT',
 --     'Vulkan.Core12.PhysicalDeviceVulkan11Features',
 --     'Vulkan.Core12.PhysicalDeviceVulkan12Features',
+--     'Vulkan.Core13.PhysicalDeviceVulkan13Features',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
 --     'Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout.PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',
 --     'Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats.PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',
 --     'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
 --     or
---     'Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures'
 --
 -- -   #VUID-VkDeviceCreateInfo-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique, with the exception of
 --     structures of type
 --     'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceDeviceMemoryReportCreateInfoEXT'
 --     or
---     'Vulkan.Extensions.VK_EXT_private_data.DevicePrivateDataCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_private_data.DevicePrivateDataCreateInfo'
 --
 -- -   #VUID-VkDeviceCreateInfo-flags-zerobitmask# @flags@ /must/ be @0@
 --
@@ -907,23 +928,23 @@
   , -- | @pQueueCreateInfos@ is a pointer to an array of 'DeviceQueueCreateInfo'
     -- structures describing the queues that are requested to be created along
     -- with the logical device. Refer to the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queue-creation Queue Creation>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-queue-creation Queue Creation>
     -- section below for further details.
     queueCreateInfos :: Vector (SomeStruct DeviceQueueCreateInfo)
   , -- | @ppEnabledLayerNames@ is deprecated and ignored. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers-devicelayerdeprecation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-layers-devicelayerdeprecation>.
     enabledLayerNames :: Vector ByteString
   , -- | @ppEnabledExtensionNames@ is a pointer to an array of
     -- @enabledExtensionCount@ null-terminated UTF-8 strings containing the
     -- names of extensions to enable for the created device. See the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-extensions>
     -- section for further details.
     enabledExtensionNames :: Vector ByteString
   , -- | @pEnabledFeatures@ is @NULL@ or a pointer to a
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceFeatures' structure
     -- containing boolean indicators of all the features to be enabled. Refer
     -- to the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features Features>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features Features>
     -- section for further details.
     enabledFeatures :: Maybe PhysicalDeviceFeatures
   }
@@ -942,31 +963,31 @@
     | Just Refl <- eqT @e @PhysicalDeviceLinearColorAttachmentFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageViewMinLodFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRGBA10X6FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceSynchronization2FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSynchronization2Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryRDMAFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthClipControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubpassShadingFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDevice4444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceImageRobustnessFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceImageRobustnessFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = Just f
     | Just Refl <- eqT @e @DeviceDiagnosticsConfigCreateInfoNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDiagnosticsConfigFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicState2FeaturesEXT = Just f
@@ -974,13 +995,14 @@
     | Just Refl <- eqT @e @PhysicalDeviceBorderColorSwizzleFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCustomBorderColorFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVulkan13Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVulkan12Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVulkan11Features = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePipelineCreationCacheControlFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineCreationCacheControlFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSeparateDepthStencilLayoutsFeatures = Just f
@@ -993,7 +1015,7 @@
     | Just Refl <- eqT @e @PhysicalDevicePerformanceQueryFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcrImageArraysFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTCHDRFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImagelessFramebufferFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeatures = Just f
@@ -1032,12 +1054,12 @@
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorIndexingFeatures = Just f
     | Just Refl <- eqT @e @DeviceDeviceMemoryReportCreateInfoEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceMemoryReportFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceGlobalPriorityQueryFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceGlobalPriorityQueryFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceHostQueryResetFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderFloat16Int8Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderDrawParametersFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance4FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance4Features = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultiDrawFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProtectedMemoryFeatures = Just f
@@ -1050,8 +1072,8 @@
     | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVariablePointersFeatures = Just f
     | Just Refl <- eqT @e @(PhysicalDeviceFeatures2 '[]) = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePrivateDataFeaturesEXT = Just f
-    | Just Refl <- eqT @e @DevicePrivateDataCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePrivateDataFeatures = Just f
+    | Just Refl <- eqT @e @DevicePrivateDataCreateInfo = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = Just f
     | otherwise = Nothing
 
diff --git a/src/Vulkan/Core10/DeviceInitialization.hs b/src/Vulkan/Core10/DeviceInitialization.hs
--- a/src/Vulkan/Core10/DeviceInitialization.hs
+++ b/src/Vulkan/Core10/DeviceInitialization.hs
@@ -265,7 +265,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateInstance-ppEnabledExtensionNames-01388# All
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required extensions>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-extensions-extensiondependencies required extensions>
 --     for each extension in the
 --     'InstanceCreateInfo'::@ppEnabledExtensionNames@ list /must/ also be
 --     present in that list
@@ -313,7 +313,7 @@
                   -- controlling creation of the instance.
                   (InstanceCreateInfo a)
                -> -- | @pAllocator@ controls host memory allocation as described in the
-                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                   -- chapter.
                   ("allocator" ::: Maybe AllocationCallbacks)
                -> io (Instance)
@@ -398,7 +398,7 @@
                 => -- | @instance@ is the handle of the instance to destroy.
                    Instance
                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io ()
@@ -1080,6 +1080,11 @@
 -- information from the /vendor/ on how to extract the version information
 -- from @driverVersion@.
 --
+-- On implementations that claim support for the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#roadmap-2022 Roadmap 2022>
+-- profile, the major and minor version expressed by @apiVersion@ /must/ be
+-- at least Vulkan 1.3.
+--
 -- The @vendorID@ and @deviceID@ fields are provided to allow applications
 -- to adapt to device characteristics that are not adequately exposed by
 -- other Vulkan queries.
@@ -1105,7 +1110,7 @@
 -- 16 bits of @vendorID@ /must/ contain that PCI vendor ID, and the
 -- remaining bits /must/ be set to zero. Otherwise, the value returned
 -- /must/ be a valid Khronos vendor ID, obtained as described in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vulkan-styleguide Vulkan Documentation and Extensions: Procedures and Conventions>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vulkan-styleguide Vulkan Documentation and Extensions: Procedures and Conventions>
 -- document in the section “Registering a Vendor ID with Khronos”. Khronos
 -- vendor IDs are allocated starting at 0x10000, to distinguish them from
 -- the PCI vendor ID namespace. Khronos vendor IDs are symbolically defined
@@ -1139,7 +1144,7 @@
 data PhysicalDeviceProperties = PhysicalDeviceProperties
   { -- | @apiVersion@ is the version of Vulkan supported by the device, encoded
     -- as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
     apiVersion :: Word32
   , -- | @driverVersion@ is the vendor-specified version of the driver.
     driverVersion :: Word32
@@ -1164,12 +1169,12 @@
     pipelineCacheUUID :: ByteString
   , -- | @limits@ is the 'PhysicalDeviceLimits' structure specifying
     -- device-specific limits of the physical device. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits Limits>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits Limits>
     -- for details.
     limits :: PhysicalDeviceLimits
   , -- | @sparseProperties@ is the 'PhysicalDeviceSparseProperties' structure
     -- specifying various sparse related properties of the physical device. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalprops Sparse Properties>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-physicalprops Sparse Properties>
     -- for details.
     sparseProperties :: PhysicalDeviceSparseProperties
   }
@@ -1293,7 +1298,7 @@
 --
 -- Implicit layers /must/ be disabled if they do not support a version at
 -- least as high as @apiVersion@. See the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#LoaderInterfaceArchitecture “Architecture of the Vulkan Loader Interfaces”>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#LoaderInterfaceArchitecture “Architecture of the Vulkan Loader Interfaces”>
 -- document for additional information.
 --
 -- Note
@@ -1343,7 +1348,7 @@
     engineVersion :: Word32
   , -- | @apiVersion@ /must/ be the highest version of Vulkan that the
     -- application is designed to use, encoded as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
     -- The patch version number specified in @apiVersion@ is ignored when
     -- creating an instance object. Only the major and minor versions of the
     -- instance /must/ match those requested in @apiVersion@.
@@ -1492,7 +1497,7 @@
     -- listed in this array, with the first array element being the closest to
     -- the application, and the last array element being the closest to the
     -- driver. See the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-layers>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-layers>
     -- section for further details.
     enabledLayerNames :: Vector ByteString
   , -- | @ppEnabledExtensionNames@ is a pointer to an array of
@@ -1637,11 +1642,11 @@
 -- families /may/ be (0,0,0).
 --
 -- The
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device Device Memory>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device Device Memory>
 -- section describes memory properties queried from the physical device.
 --
 -- For physical device feature queries see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features Features>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features Features>
 -- chapter.
 --
 -- = See Also
@@ -1661,10 +1666,11 @@
     queueCount :: Word32
   , -- | @timestampValidBits@ is the unsigned integer count of meaningful bits in
     -- the timestamps written via
-    -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR' or
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'. The valid range
-    -- for the count is 36..64 bits, or a value of 0, indicating no support for
-    -- timestamps. Bits outside the valid range are guaranteed to be zeros.
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
+    -- or 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp'. The valid
+    -- range for the count is 36..64 bits, or a value of 0, indicating no
+    -- support for timestamps. Bits outside the valid range are guaranteed to
+    -- be zeros.
     timestampValidBits :: Word32
   , -- | @minImageTransferGranularity@ is the minimum granularity supported for
     -- image transfer operations on the queues in this queue family.
@@ -1896,7 +1902,7 @@
 -- type with the
 -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
 -- bit set in its @propertyFlags@. If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>
 -- feature is enabled, there /must/ be at least one memory type with the
 -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
 -- bit set in its @propertyFlags@.
@@ -1924,7 +1930,7 @@
 -- the case their @propertyFlags@ members are not in a subset relation.
 -- That potentially allows more than one possible way to order the same set
 -- of memory types. Notice that the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-bitmask-list list of all allowed memory property flag combinations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-bitmask-list list of all allowed memory property flag combinations>
 -- is written in a valid order. But if instead
 -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_LOCAL_BIT'
 -- was before
@@ -2237,7 +2243,7 @@
 -- = Members
 --
 -- -   @maxExtent@ are the maximum image dimensions. See the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extentperimagetype Allowed Extent Values>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extentperimagetype Allowed Extent Values>
 --     section below for how these values are constrained by @type@.
 --
 -- -   @maxMipLevels@ is the maximum number of mipmap levels.
@@ -2261,7 +2267,7 @@
 --         member for which mipmap image support is not required
 --
 --     -   image @format@ is one of the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>
 --
 --     -   @flags@ contains
 --         'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
@@ -2280,7 +2286,7 @@
 --         @type@ is 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D'
 --
 --     -   @format@ is one of the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>
 --
 -- -   If @tiling@ is
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
@@ -2290,7 +2296,7 @@
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits'
 --     specifying all the supported sample counts for this image as
 --     described
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-counts below>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-supported-sample-counts below>.
 --
 -- -   @maxResourceSize@ is an upper bound on the total image size in
 --     bytes, inclusive of all image subresources. Implementations /may/
@@ -2433,7 +2439,7 @@
     --         so all accesses through such pointers are considered to be out
     --         of bounds. Buffer accesses through buffer device addresses are
     --         not bounds-checked. If the
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccess cooperativeMatrixRobustBufferAccess>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-cooperativeMatrixRobustBufferAccess cooperativeMatrixRobustBufferAccess>
     --         feature is not enabled, then accesses using
     --         @OpCooperativeMatrixLoadNV@ and @OpCooperativeMatrixStoreNV@
     --         /may/ not be bounds-checked.
@@ -2446,7 +2452,7 @@
     --         the end are not statically used.
     --
     --     -   If
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --         is not enabled and any buffer access is determined to be out of
     --         bounds, then any other access of the same type (load, store, or
     --         atomic) to the same buffer that accesses an address less than 16
@@ -2470,31 +2476,31 @@
     -- -   Out-of-bounds buffer loads will return any of the following values:
     --
     --     -   If the access is to a uniform buffer and
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --         is enabled, loads of offsets between the end of the descriptor
     --         range and the end of the descriptor range rounded up to a
     --         multiple of
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>
     --         bytes /must/ return either zero values or the contents of the
     --         memory at the offset being loaded. Loads of offsets past the
     --         descriptor range rounded up to a multiple of
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>
     --         bytes /must/ return zero values.
     --
     --     -   If the access is to a storage buffer and
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --         is enabled, loads of offsets between the end of the descriptor
     --         range and the end of the descriptor range rounded up to a
     --         multiple of
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>
     --         bytes /must/ return either zero values or the contents of the
     --         memory at the offset being loaded. Loads of offsets past the
     --         descriptor range rounded up to a multiple of
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>
     --         bytes /must/ return zero values. Similarly, stores to addresses
     --         between the end of the descriptor range and the end of the
     --         descriptor range rounded up to a multiple of
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>
     --         bytes /may/ be discarded.
     --
     --     -   Non-atomic accesses to storage buffers that are a multiple of 32
@@ -2502,14 +2508,14 @@
     --         individually bounds-checked.
     --
     --     -   If the access is to an index buffer and
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --         is enabled, zero values /must/ be returned.
     --
     --     -   If the access is to a uniform texel buffer or storage texel
     --         buffer and
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --         is enabled, zero values /must/ be returned, and then
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
     --         is applied based on the buffer view’s format.
     --
     --     -   Values from anywhere within the memory range(s) bound to the
@@ -2529,7 +2535,7 @@
     --     bound to the buffer, but /must/ not modify any other memory.
     --
     --     -   If
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --         is enabled, out of bounds writes /must/ not modify any memory.
     --
     -- -   Out-of-bounds atomics /may/ modify values within the memory range(s)
@@ -2537,12 +2543,12 @@
     --     return an undefined value.
     --
     --     -   If
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --         is enabled, out of bounds atomics /must/ not modify any memory,
     --         and return an undefined value.
     --
     -- -   If
-    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --     is disabled, vertex input attributes are considered out of bounds if
     --     the offset of the attribute in the bound vertex buffer range plus
     --     the size of the attribute is greater than either:
@@ -2572,14 +2578,14 @@
     --         -   Zero values, or (0,0,0,x) vectors, as described above.
     --
     -- -   If
-    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     --     is enabled, vertex input attributes are considered out of bounds if
     --     the offset of the attribute in the bound vertex buffer range plus
     --     the size of the attribute is greater than the byte size of the
     --     memory range bound to the vertex buffer binding.
     --
     --     -   If a vertex input attribute is out of bounds, the
-    --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction raw data>
+    --         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input-extraction raw data>
     --         extracted are zero values, and missing G, B, or A components are
     --         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.
     --
@@ -2596,7 +2602,7 @@
     -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT32'). If this feature is
     -- supported, @maxDrawIndexedIndexValue@ /must/ be 232-1; otherwise it
     -- /must/ be no smaller than 224-1. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDrawIndexedIndexValue maxDrawIndexedIndexValue>.
     fullDrawIndexUint32 :: Bool
   , -- | #features-imageCubeArray# @imageCubeArray@ specifies whether image views
     -- with a 'Vulkan.Core10.Enums.ImageViewType.ImageViewType' of
@@ -2632,7 +2638,7 @@
     -- modules /can/ declare the @Tessellation@ capability.
     tessellationShader :: Bool
   , -- | #features-sampleRateShading# @sampleRateShading@ specifies whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>
     -- and multisample interpolation are supported. If this feature is not
     -- enabled, the @sampleShadingEnable@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' structure
@@ -2647,7 +2653,7 @@
     -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_ALPHA', and
     -- 'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA' enum
     -- values /must/ not be used as source or destination blending factors. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-dsb>.
     dualSrcBlend :: Bool
   , -- | #features-logicOp# @logicOp@ specifies whether logic operations are
     -- supported. If this feature is not enabled, the @logicOpEnable@ member of
@@ -2663,7 +2669,7 @@
     -- /must/ be 0 or 1. The @maxDrawIndirectCount@ member of the
     -- 'PhysicalDeviceLimits' structure /must/ also be 1 if this feature is not
     -- supported. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDrawIndirectCount maxDrawIndirectCount>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDrawIndirectCount maxDrawIndirectCount>.
     multiDrawIndirect :: Bool
   , -- | #features-drawIndirectFirstInstance# @drawIndirectFirstInstance@
     -- specifies whether indirect drawing calls support the @firstInstance@
@@ -2732,7 +2738,7 @@
   , -- | #features-alphaToOne# @alphaToOne@ specifies whether the implementation
     -- is able to replace the alpha value of the fragment shader color output
     -- in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covg Multisample Coverage>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>
     -- fragment operation. If this feature is not enabled, then the
     -- @alphaToOneEnable@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo' structure
@@ -2977,9 +2983,9 @@
     -- evaluation shaders, or if the shader modules /can/ declare the
     -- @GeometryPointSize@ capability for geometry shaders. An implementation
     -- supporting this feature /must/ also support one or both of the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellationShader>
     -- or
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
     -- features.
     shaderTessellationAndGeometryPointSize :: Bool
   , -- | #features-shaderImageGatherExtended# @shaderImageGatherExtended@
@@ -3060,7 +3066,7 @@
     -- 'Vulkan.Core10.Enums.Format.FORMAT_R32G32_SFLOAT' from
     -- @StorageImageExtendedFormats@ SPIR-V capability, are already covered by
     -- core Vulkan
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-mandatory-features-32bit mandatory format support>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-mandatory-features-32bit mandatory format support>.
     shaderStorageImageExtendedFormats :: Bool
   , -- | #features-shaderStorageImageMultisample# @shaderStorageImageMultisample@
     -- specifies whether multisampled storage images are supported. If this
@@ -3077,7 +3083,7 @@
     -- require a format qualifier to be specified when reading.
     -- @shaderStorageImageReadWithoutFormat@ applies only to formats listed in
     -- the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format>
     -- list.
     shaderStorageImageReadWithoutFormat :: Bool
   , -- | #features-shaderStorageImageWriteWithoutFormat#
@@ -3085,7 +3091,7 @@
     -- require a format qualifier to be specified when writing.
     -- @shaderStorageImageWriteWithoutFormat@ applies only to formats listed in
     -- the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-without-shader-storage-format storage without format>
     -- list.
     shaderStorageImageWriteWithoutFormat :: Bool
   , -- | #features-shaderUniformBufferArrayDynamicIndexing#
@@ -3199,7 +3205,7 @@
     -- set in the @flags@ member of the 'Vulkan.Core10.Buffer.BufferCreateInfo'
     -- and 'Vulkan.Core10.Image.ImageCreateInfo' structures, respectively.
     -- Otherwise resource memory /can/ be managed as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>.
     sparseBinding :: Bool
   , -- | #features-sparseResidencyBuffer# @sparseResidencyBuffer@ specifies
     -- whether the device /can/ access partially resident buffers. If this
@@ -3283,7 +3289,7 @@
     sparseResidencyAliased :: Bool
   , -- | #features-variableMultisampleRate# @variableMultisampleRate@ specifies
     -- whether all pipelines that will be bound to a command buffer during a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>
     -- /must/ have the same value for
     -- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@.
     -- If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation
@@ -3558,7 +3564,7 @@
     -- if the physical device will access all single-sample 2D sparse resources
     -- using the standard sparse image block shapes (based on image format), as
     -- described in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>
     -- table. If this property is not supported the value returned in the
     -- @imageGranularity@ member of the
     -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'
@@ -3569,7 +3575,7 @@
     -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the physical device will access
     -- all multisample 2D sparse resources using the standard sparse image
     -- block shapes (based on image format), as described in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa Standard Sparse Image Block Shapes (MSAA)>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseblockshapesmsaa Standard Sparse Image Block Shapes (MSAA)>
     -- table. If this property is not supported, the value returned in the
     -- @imageGranularity@ member of the
     -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'
@@ -3580,7 +3586,7 @@
     -- if the physical device will access all 3D sparse resources using the
     -- standard sparse image block shapes (based on image format), as described
     -- in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseblockshapessingle Standard Sparse Image Block Shapes (Single Sample)>
     -- table. If this property is not supported, the value returned in the
     -- @imageGranularity@ member of the
     -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties'
@@ -3756,7 +3762,7 @@
     -- granularity, in bytes, at which buffer or linear image resources, and
     -- optimal image resources /can/ be bound to adjacent offsets in the same
     -- 'Vulkan.Core10.Handles.DeviceMemory' object without aliasing. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-bufferimagegranularity Buffer-Image Granularity>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-bufferimagegranularity Buffer-Image Granularity>
     -- for more details.
     bufferImageGranularity :: DeviceSize
   , -- | #limits-sparseAddressSpaceSize# @sparseAddressSpaceSize@ is the total
@@ -3769,7 +3775,7 @@
     -- pipeline. All 'Vulkan.Core10.Handles.DescriptorSet' decorations in
     -- shader modules /must/ have a value less than @maxBoundDescriptorSets@.
     -- See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sets>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sets>.
     maxBoundDescriptorSets :: Word32
   , -- | #limits-maxPerStageDescriptorSamplers# @maxPerStageDescriptorSamplers@
     -- is the maximum number of samplers that /can/ be accessible to a single
@@ -3783,9 +3789,9 @@
     -- stage when the @stageFlags@ member of the
     -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
     -- the bit for that shader stage set. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampler>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>.
     maxPerStageDescriptorSamplers :: Word32
   , -- | #limits-maxPerStageDescriptorUniformBuffers#
     -- @maxPerStageDescriptorUniformBuffers@ is the maximum number of uniform
@@ -3800,9 +3806,9 @@
     -- stage when the @stageFlags@ member of the
     -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
     -- the bit for that shader stage set. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
     maxPerStageDescriptorUniformBuffers :: Word32
   , -- | #limits-maxPerStageDescriptorStorageBuffers#
     -- @maxPerStageDescriptorStorageBuffers@ is the maximum number of storage
@@ -3817,9 +3823,9 @@
     -- pipeline shader stage when the @stageFlags@ member of the
     -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
     -- the bit for that shader stage set. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
     maxPerStageDescriptorStorageBuffers :: Word32
   , -- | #limits-maxPerStageDescriptorSampledImages#
     -- @maxPerStageDescriptorSampledImages@ is the maximum number of sampled
@@ -3835,10 +3841,10 @@
     -- pipeline shader stage when the @stageFlags@ member of the
     -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
     -- the bit for that shader stage set. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage>,
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer>.
     maxPerStageDescriptorSampledImages :: Word32
   , -- | #limits-maxPerStageDescriptorStorageImages#
     -- @maxPerStageDescriptorStorageImages@ is the maximum number of storage
@@ -3853,9 +3859,9 @@
     -- pipeline shader stage when the @stageFlags@ member of the
     -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
     -- the bit for that shader stage set. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage>,
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.
     maxPerStageDescriptorStorageImages :: Word32
   , -- | #limits-maxPerStageDescriptorInputAttachments#
     -- @maxPerStageDescriptorInputAttachments@ is the maximum number of input
@@ -3870,7 +3876,7 @@
     -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' structure has
     -- the bit for that shader stage set. These are only supported for the
     -- fragment stage. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inputattachment>.
     maxPerStageDescriptorInputAttachments :: Word32
   , -- | #limits-maxPerStageResources# @maxPerStageResources@ is the maximum
     -- number of resources that /can/ be accessible to a single shader stage in
@@ -3900,9 +3906,9 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampler>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>.
     maxDescriptorSetSamplers :: Word32
   , -- | #limits-maxDescriptorSetUniformBuffers# @maxDescriptorSetUniformBuffers@
     -- is the maximum number of uniform buffers that /can/ be included in a
@@ -3913,9 +3919,9 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
     maxDescriptorSetUniformBuffers :: Word32
   , -- | #limits-maxDescriptorSetUniformBuffersDynamic#
     -- @maxDescriptorSetUniformBuffersDynamic@ is the maximum number of dynamic
@@ -3926,7 +3932,7 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic>.
     maxDescriptorSetUniformBuffersDynamic :: Word32
   , -- | #limits-maxDescriptorSetStorageBuffers# @maxDescriptorSetStorageBuffers@
     -- is the maximum number of storage buffers that /can/ be included in a
@@ -3937,9 +3943,9 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
     maxDescriptorSetStorageBuffers :: Word32
   , -- | #limits-maxDescriptorSetStorageBuffersDynamic#
     -- @maxDescriptorSetStorageBuffersDynamic@ is the maximum number of dynamic
@@ -3950,7 +3956,7 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic>.
     maxDescriptorSetStorageBuffersDynamic :: Word32
   , -- | #limits-maxDescriptorSetSampledImages# @maxDescriptorSetSampledImages@
     -- is the maximum number of sampled images that /can/ be included in a
@@ -3962,10 +3968,10 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage>,
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer>.
     maxDescriptorSetSampledImages :: Word32
   , -- | #limits-maxDescriptorSetStorageImages# @maxDescriptorSetStorageImages@
     -- is the maximum number of storage images that /can/ be included in a
@@ -3976,9 +3982,9 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage>,
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer>.
     maxDescriptorSetStorageImages :: Word32
   , -- | #limits-maxDescriptorSetInputAttachments#
     -- @maxDescriptorSetInputAttachments@ is the maximum number of input
@@ -3989,7 +3995,7 @@
     -- created without the
     -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
     -- bit set count against this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inputattachment>.
     maxDescriptorSetInputAttachments :: Word32
   , -- | #limits-maxVertexInputAttributes# @maxVertexInputAttributes@ is the
     -- maximum number of vertex input attributes that /can/ be specified for a
@@ -3999,9 +4005,9 @@
     -- @pVertexAttributeDescriptions@ member of the
     -- 'Vulkan.Core10.Pipeline.PipelineVertexInputStateCreateInfo' structure.
     -- See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-attrib>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-attrib>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input>.
     maxVertexInputAttributes :: Word32
   , -- | #limits-maxVertexInputBindings# @maxVertexInputBindings@ is the maximum
     -- number of vertex buffers that /can/ be specified for providing vertex
@@ -4013,31 +4019,31 @@
     -- The @binding@ member of
     -- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' /must/ be less
     -- than this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input>.
     maxVertexInputBindings :: Word32
   , -- | #limits-maxVertexInputAttributeOffset# @maxVertexInputAttributeOffset@
     -- is the maximum vertex input attribute offset that /can/ be added to the
     -- vertex input binding stride. The @offset@ member of the
     -- 'Vulkan.Core10.Pipeline.VertexInputAttributeDescription' structure
     -- /must/ be less than or equal to this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input>.
     maxVertexInputAttributeOffset :: Word32
   , -- | #limits-maxVertexInputBindingStride# @maxVertexInputBindingStride@ is
     -- the maximum vertex input binding stride that /can/ be specified in a
     -- vertex input binding. The @stride@ member of the
     -- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' structure /must/
     -- be less than or equal to this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input>.
     maxVertexInputBindingStride :: Word32
   , -- | #limits-maxVertexOutputComponents# @maxVertexOutputComponents@ is the
     -- maximum number of components of output variables which /can/ be output
     -- by a vertex shader. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-vertex>.
     maxVertexOutputComponents :: Word32
   , -- | #limits-maxTessellationGenerationLevel# @maxTessellationGenerationLevel@
     -- is the maximum tessellation generation level supported by the
     -- fixed-function tessellation primitive generator. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation>.
     maxTessellationGenerationLevel :: Word32
   , -- | #limits-maxTessellationPatchSize# @maxTessellationPatchSize@ is the
     -- maximum patch size, in vertices, of patches that /can/ be processed by
@@ -4047,7 +4053,7 @@
     -- specified at pipeline creation time and the value provided in the
     -- @OutputVertices@ execution mode of shader modules /must/ be less than or
     -- equal to this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation>.
     maxTessellationPatchSize :: Word32
   , -- | #limits-maxTessellationControlPerVertexInputComponents#
     -- @maxTessellationControlPerVertexInputComponents@ is the maximum number
@@ -4083,7 +4089,7 @@
     -- the maximum invocation count supported for instanced geometry shaders.
     -- The value provided in the @Invocations@ execution mode of shader modules
     -- /must/ be less than or equal to this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#geometry>.
     maxGeometryShaderInvocations :: Word32
   , -- | #limits-maxGeometryInputComponents# @maxGeometryInputComponents@ is the
     -- maximum number of components of input variables which /can/ be provided
@@ -4114,15 +4120,15 @@
     -- is the maximum number of output attachments which /can/ be written to by
     -- the fragment shader stage when blending is enabled and one of the dual
     -- source blend modes is in use. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-dsb>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-dsb>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dualSrcBlend>.
     maxFragmentDualSrcAttachments :: Word32
   , -- | #limits-maxFragmentCombinedOutputResources#
     -- @maxFragmentCombinedOutputResources@ is the total number of storage
     -- buffers, storage images, and output @Location@ decorated color
     -- attachments (described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>)
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-fragmentoutput Fragment Output Interface>)
     -- which /can/ be used in the fragment shader stage.
     maxFragmentCombinedOutputResources :: Word32
   , -- | #limits-maxComputeSharedMemorySize# @maxComputeSharedMemorySize@ is the
@@ -4139,7 +4145,7 @@
     -- non-Block variables declared with @Workgroup@ storage class were
     -- assigned offsets in an arbitrary order by successively taking the
     -- smallest valid offset according to the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Storage Buffer Layout>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Storage Buffer Layout>
     -- rules. (This is equivalent to using the GLSL std430 layout rules.)
     maxComputeSharedMemorySize :: Word32
   , -- | #limits-maxComputeWorkGroupCount# @maxComputeWorkGroupCount@[3] is the
@@ -4148,7 +4154,7 @@
     -- local workgroups for the X, Y, and Z dimensions, respectively. The
     -- workgroup count parameters to the dispatching commands /must/ be less
     -- than or equal to the corresponding limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#dispatch>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#dispatch>.
     maxComputeWorkGroupCount :: (Word32, Word32, Word32)
   , -- | #limits-maxComputeWorkGroupInvocations# @maxComputeWorkGroupInvocations@
     -- is the maximum total number of compute shader invocations in a single
@@ -4167,7 +4173,7 @@
     maxComputeWorkGroupSize :: (Word32, Word32, Word32)
   , -- | #limits-subPixelPrecisionBits# @subPixelPrecisionBits@ is the number of
     -- bits of subpixel precision in framebuffer coordinates xf and yf. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast>.
     subPixelPrecisionBits :: Word32
   , -- | #limits-subTexelPrecisionBits# @subTexelPrecisionBits@ is the number of
     -- bits of precision in the division along an axis of an image used for
@@ -4186,11 +4192,11 @@
     -- maximum index value that /can/ be used for indexed draw calls when using
     -- 32-bit indices. This excludes the primitive restart index value of
     -- 0xFFFFFFFF. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fullDrawIndexUint32 fullDrawIndexUint32>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fullDrawIndexUint32 fullDrawIndexUint32>.
     maxDrawIndexedIndexValue :: Word32
   , -- | #limits-maxDrawIndirectCount# @maxDrawIndirectCount@ is the maximum draw
     -- count that is supported for indirect drawing calls. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiDrawIndirect multiDrawIndirect>.
     maxDrawIndirectCount :: Word32
   , -- | #limits-maxSamplerLodBias# @maxSamplerLodBias@ is the maximum absolute
     -- sampler LOD bias. The sum of the @mipLodBias@ member of the
@@ -4198,14 +4204,14 @@
     -- operand of image sampling operations in shader modules (or 0 if no
     -- @Bias@ operand is provided to an image sampling operation) are clamped
     -- to the range [-@maxSamplerLodBias@,+@maxSamplerLodBias@]. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-mipLodBias>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-mipLodBias>.
     maxSamplerLodBias :: Float
   , -- | #limits-maxSamplerAnisotropy# @maxSamplerAnisotropy@ is the maximum
     -- degree of sampler anisotropy. The maximum degree of anisotropic
     -- filtering used for an image sampling operation is the minimum of the
     -- @maxAnisotropy@ member of the 'Vulkan.Core10.Sampler.SamplerCreateInfo'
     -- structure and this limit. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-maxAnisotropy>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-maxAnisotropy>.
     maxSamplerAnisotropy :: Float
   , -- | #limits-maxViewports# @maxViewports@ is the maximum number of active
     -- viewports. The @viewportCount@ member of the
@@ -4218,14 +4224,14 @@
     -- respectively. The maximum viewport dimensions /must/ be greater than or
     -- equal to the largest image which /can/ be created and used as a
     -- framebuffer attachment. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.
     maxViewportDimensions :: (Word32, Word32)
   , -- | #limits-viewportboundsrange# @viewportBoundsRange@[2] is the [minimum,
     -- maximum] range that the corners of a viewport /must/ be contained in.
     -- This range /must/ be at least [-2 × @size@, 2 × @size@ - 1], where
     -- @size@ = max(@maxViewportDimensions@[0], @maxViewportDimensions@[1]).
     -- See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-viewport Controlling the Viewport>.
     --
     -- Note
     --
@@ -4249,26 +4255,26 @@
     -- 'Vulkan.Core10.Memory.mapMemory', subtracting @offset@ bytes from the
     -- returned pointer will always produce an integer multiple of this limit.
     -- See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-hostaccess>.
     -- The value /must/ be a power of two.
     minMemoryMapAlignment :: Word64
   , -- | #limits-minTexelBufferOffsetAlignment# @minTexelBufferOffsetAlignment@
     -- is the minimum /required/ alignment, in bytes, for the @offset@ member
     -- of the 'Vulkan.Core10.BufferView.BufferViewCreateInfo' structure for
     -- texel buffers. The value /must/ be a power of two. If
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
     -- is enabled, this limit is equivalent to the maximum of the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes uniformTexelBufferOffsetAlignmentBytes>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetAlignmentBytes uniformTexelBufferOffsetAlignmentBytes>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes storageTexelBufferOffsetAlignmentBytes>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-storageTexelBufferOffsetAlignmentBytes storageTexelBufferOffsetAlignmentBytes>
     -- members of
-    -- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
+    -- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
     -- but smaller alignment is /optionally/ allowed by
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment storageTexelBufferOffsetSingleTexelAlignment>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-storageTexelBufferOffsetSingleTexelAlignment storageTexelBufferOffsetSingleTexelAlignment>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment uniformTexelBufferOffsetSingleTexelAlignment>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-uniformTexelBufferOffsetSingleTexelAlignment uniformTexelBufferOffsetSingleTexelAlignment>.
     -- If
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-texelBufferAlignment texelBufferAlignment>
     -- is not enabled,
     -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo'::@offset@ /must/ be a
     -- multiple of this value.
@@ -4345,7 +4351,7 @@
     -- the color sample counts that are supported for all framebuffer color
     -- attachments with floating- or fixed-point formats. For color attachments
     -- with integer formats, see
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-framebufferIntegerColorSampleCounts framebufferIntegerColorSampleCounts>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-framebufferIntegerColorSampleCounts framebufferIntegerColorSampleCounts>.
     framebufferColorSampleCounts :: SampleCountFlags
   , -- | #limits-framebufferDepthSampleCounts# @framebufferDepthSampleCounts@ is
     -- a bitmask1 of
@@ -4363,7 +4369,7 @@
     -- @framebufferNoAttachmentsSampleCounts@ is a bitmask1 of
     -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' indicating
     -- the supported sample counts for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-noattachments subpass which uses no attachments>.
     framebufferNoAttachmentsSampleCounts :: SampleCountFlags
   , -- | #limits-maxColorAttachments# @maxColorAttachments@ is the maximum number
     -- of color attachments that /can/ be used by a subpass in a render pass.
@@ -4428,11 +4434,11 @@
     -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT' in the
     -- 'QueueFamilyProperties'::@queueFlags@ support
     -- 'QueueFamilyProperties'::@timestampValidBits@ of at least 36. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestamps Timestamp Queries>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-timestamps Timestamp Queries>.
     timestampComputeAndGraphics :: Bool
   , -- | #limits-timestampPeriod# @timestampPeriod@ is the number of nanoseconds
     -- /required/ for a timestamp query to be incremented by 1. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestamps Timestamp Queries>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-timestamps Timestamp Queries>.
     timestampPeriod :: Float
   , -- | #limits-maxClipDistances# @maxClipDistances@ is the maximum number of
     -- clip distances that /can/ be used in a single shader stage. The size of
@@ -4457,7 +4463,7 @@
     -- 'Vulkan.Core10.Device.DeviceQueueCreateInfo'::@pQueuePriorities@. This
     -- /must/ be at least 2, and levels /must/ be spread evenly over the range,
     -- with at least one level at 1.0, and another at 0.0. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-priority>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-priority>.
     discreteQueuePriorities :: Word32
   , -- | #limits-pointSizeRange# @pointSizeRange@[2] is the range
     -- [@minimum@,@maximum@] of supported sizes for points. Values written to
@@ -4487,12 +4493,12 @@
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', lines /may/ be rasterized under
     -- a relaxed set of rules. If set to 'Vulkan.Core10.FundamentalTypes.TRUE',
     -- lines are rasterized as per the strict definition. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
     strictLines :: Bool
   , -- | #limits-standardSampleLocations# @standardSampleLocations@ specifies
     -- whether rasterization uses the standard sample locations as documented
     -- in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling Multisampling>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling Multisampling>.
     -- If set to 'Vulkan.Core10.FundamentalTypes.TRUE', the implementation uses
     -- the documented sample locations. If set to
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', the implementation /may/ use
@@ -4501,10 +4507,10 @@
   , -- | #limits-optimalBufferCopyOffsetAlignment#
     -- @optimalBufferCopyOffsetAlignment@ is the optimal buffer offset
     -- alignment in bytes for
-    -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR',
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
     -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
-    -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR', and
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. The per
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
+    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. The per
     -- texel alignment requirements are enforced, but applications /should/ use
     -- the optimal alignment for optimal performance and power use. The value
     -- /must/ be a power of two.
@@ -4512,19 +4518,19 @@
   , -- | #limits-optimalBufferCopyRowPitchAlignment#
     -- @optimalBufferCopyRowPitchAlignment@ is the optimal buffer row pitch
     -- alignment in bytes for
-    -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR',
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
     -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
-    -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR', and
-    -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. Row pitch is
-    -- the number of bytes between texels with the same X coordinate in
-    -- adjacent rows (Y coordinates differ by one). The per texel alignment
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
+    -- and 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer'. Row
+    -- pitch is the number of bytes between texels with the same X coordinate
+    -- in adjacent rows (Y coordinates differ by one). The per texel alignment
     -- requirements are enforced, but applications /should/ use the optimal
     -- alignment for optimal performance and power use. The value /must/ be a
     -- power of two.
     optimalBufferCopyRowPitchAlignment :: DeviceSize
   , -- | #limits-nonCoherentAtomSize# @nonCoherentAtomSize@ is the size and
     -- alignment in bytes that bounds concurrent access to
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host-mapped device memory>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-hostaccess host-mapped device memory>.
     -- The value /must/ be a power of two.
     --
     -- [1]
@@ -4534,7 +4540,7 @@
     --     sample counts for each image type. Individual images /may/ support
     --     additional sample counts, which are queried using
     --     'getPhysicalDeviceImageFormatProperties' as described in
-    --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supported-sample-counts Supported Sample Counts>.
+    --     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-supported-sample-counts Supported Sample Counts>.
     nonCoherentAtomSize :: DeviceSize
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Core10/Enums/AccessFlagBits.hs b/src/Vulkan/Core10/Enums/AccessFlagBits.hs
--- a/src/Vulkan/Core10/Enums/AccessFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/AccessFlagBits.hs
@@ -18,7 +18,6 @@
                                                            , ACCESS_HOST_WRITE_BIT
                                                            , ACCESS_MEMORY_READ_BIT
                                                            , ACCESS_MEMORY_WRITE_BIT
-                                                           , ACCESS_NONE_KHR
                                                            , ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV
                                                            , ACCESS_COMMAND_PREPROCESS_READ_BIT_NV
                                                            , ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
@@ -30,6 +29,7 @@
                                                            , ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
                                                            , ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
                                                            , ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
+                                                           , ACCESS_NONE
                                                            , ..
                                                            )
                                            ) where
@@ -53,12 +53,12 @@
 -- = Description
 --
 -- These values all have the same meaning as the equivalently named values
--- for 'Vulkan.Extensions.VK_KHR_synchronization2.AccessFlags2KHR'.
+-- for 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'.
 --
 -- Certain access types are only performed by a subset of pipeline stages.
 -- Any synchronization command that takes both stage masks and access masks
 -- uses both to define the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
 -- - only the specified access types performed by the specified stages are
 -- included in the access scope. An application /must/ not specify an
 -- access flag in a synchronization command if it does not include a
@@ -66,108 +66,108 @@
 -- accesses of that type. The following table lists, for each access flag,
 -- which pipeline stages /can/ perform that type of access.
 --
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | Access flag                                                                          | Supported pipeline stages                                                                           |
--- +======================================================================================+=====================================================================================================+
--- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT' ,                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_INDEX_READ_BIT'                                                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                         |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT'                                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                         |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_UNIFORM_READ_BIT'                                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_SHADER_READ_BIT'                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_SHADER_WRITE_BIT'                                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT'                                                   | 'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI', or         |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'                      |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT'                                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT'                                                  | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or             |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                  |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or             |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                  |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFER_READ_BIT'                                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                          |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFER_WRITE_BIT'                                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                          |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_HOST_READ_BIT'                                                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                 |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_HOST_WRITE_BIT'                                                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                 |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_MEMORY_READ_BIT'                                                             | Any                                                                                                 |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_MEMORY_WRITE_BIT'                                                            | Any                                                                                                 |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'                                              | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'            |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI' | 'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'             |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'                                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'               |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'               |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'                                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT',              |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                        |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'                                         | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT',                     |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT',                      |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR', or           |
--- |                                                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'                                        | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
--- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'                                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'         |
--- +--------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | Access flag                                                                 | Supported pipeline stages                                                                           |
+-- +=============================================================================+=====================================================================================================+
+-- | 'ACCESS_INDIRECT_COMMAND_READ_BIT'                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT' ,                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_INDEX_READ_BIT'                                                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                         |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT'                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'                         |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_UNIFORM_READ_BIT'                                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_SHADER_READ_BIT'                                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',    |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_SHADER_WRITE_BIT'                                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR',              |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT', or                  |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT'                       |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT'                                          | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI', or           |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'                      |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT'                                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT'                                         | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT'                                  | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or             |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                  |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT'                                 | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT', or             |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'                  |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFER_READ_BIT'                                                  | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                          |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFER_WRITE_BIT'                                                 | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT' or                          |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_HOST_READ_BIT'                                                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                 |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_HOST_WRITE_BIT'                                                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'                                 |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_MEMORY_READ_BIT'                                                    | Any                                                                                                 |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_MEMORY_WRITE_BIT'                                                   | Any                                                                                                 |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'                          | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'              |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV'                                     | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV'                                    | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'                |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT'                                 | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'            |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'                      | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI' | 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'               |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'                                   | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'               |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'                           | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'               |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'                            | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT',              |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'                        |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'                                | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TASK_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_MESH_SHADER_BIT_NV',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT',                       |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT',         |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT',      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT',                     |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT',                     |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMPUTE_SHADER_BIT',                      |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR', or           |
+-- |                                                                             | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'                               | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'     |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
+-- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'                                  | 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'         |
+-- +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+
 --
 -- Supported access types
 --
@@ -183,153 +183,151 @@
 -- dispatching command. Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_DRAW_INDIRECT_BIT'
 -- pipeline stage.
-pattern ACCESS_INDIRECT_COMMAND_READ_BIT            = AccessFlagBits 0x00000001
+pattern ACCESS_INDIRECT_COMMAND_READ_BIT          = AccessFlagBits 0x00000001
 -- | 'ACCESS_INDEX_READ_BIT' specifies read access to an index buffer as part
 -- of an indexed drawing command, bound by
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'. Such access
 -- occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'
 -- pipeline stage.
-pattern ACCESS_INDEX_READ_BIT                       = AccessFlagBits 0x00000002
+pattern ACCESS_INDEX_READ_BIT                     = AccessFlagBits 0x00000002
 -- | 'ACCESS_VERTEX_ATTRIBUTE_READ_BIT' specifies read access to a vertex
 -- buffer as part of a drawing command, bound by
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'. Such access
 -- occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_INPUT_BIT'
 -- pipeline stage.
-pattern ACCESS_VERTEX_ATTRIBUTE_READ_BIT            = AccessFlagBits 0x00000004
+pattern ACCESS_VERTEX_ATTRIBUTE_READ_BIT          = AccessFlagBits 0x00000004
 -- | 'ACCESS_UNIFORM_READ_BIT' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>
 -- in any shader pipeline stage.
-pattern ACCESS_UNIFORM_READ_BIT                     = AccessFlagBits 0x00000008
+pattern ACCESS_UNIFORM_READ_BIT                   = AccessFlagBits 0x00000008
 -- | 'ACCESS_INPUT_ATTACHMENT_READ_BIT' specifies read access to an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass input attachment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass input attachment>
 -- within a render pass during subpass shading or fragment shading. Such
 -- access occurs in the
--- 'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
 -- or
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_SHADER_BIT'
 -- pipeline stage.
-pattern ACCESS_INPUT_ATTACHMENT_READ_BIT            = AccessFlagBits 0x00000010
+pattern ACCESS_INPUT_ATTACHMENT_READ_BIT          = AccessFlagBits 0x00000010
 -- | 'ACCESS_SHADER_READ_BIT' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table shader binding table>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table shader binding table>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
 -- in any shader pipeline stage.
-pattern ACCESS_SHADER_READ_BIT                      = AccessFlagBits 0x00000020
+pattern ACCESS_SHADER_READ_BIT                    = AccessFlagBits 0x00000020
 -- | 'ACCESS_SHADER_WRITE_BIT' specifies write access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
 -- in any shader pipeline stage.
-pattern ACCESS_SHADER_WRITE_BIT                     = AccessFlagBits 0x00000040
+pattern ACCESS_SHADER_WRITE_BIT                   = AccessFlagBits 0x00000040
 -- | 'ACCESS_COLOR_ATTACHMENT_READ_BIT' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachment>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachment>,
 -- such as via
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicop logic operations>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending blending>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop logic operations>,
 -- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
 -- It does not include
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
 -- pipeline stage.
-pattern ACCESS_COLOR_ATTACHMENT_READ_BIT            = AccessFlagBits 0x00000080
+pattern ACCESS_COLOR_ATTACHMENT_READ_BIT          = AccessFlagBits 0x00000080
 -- | 'ACCESS_COLOR_ATTACHMENT_WRITE_BIT' specifies write access to a
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color, resolve, or depth\/stencil resolve attachment>
 -- during a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass render pass>
 -- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
 -- pipeline stage.
-pattern ACCESS_COLOR_ATTACHMENT_WRITE_BIT           = AccessFlagBits 0x00000100
+pattern ACCESS_COLOR_ATTACHMENT_WRITE_BIT         = AccessFlagBits 0x00000100
 -- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
 -- via
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
 -- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
 -- or
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
 -- pipeline stages.
-pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT    = AccessFlagBits 0x00000200
+pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT  = AccessFlagBits 0x00000200
 -- | 'ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
 -- via
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
 -- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'
 -- or
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT'
 -- pipeline stages.
-pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT   = AccessFlagBits 0x00000400
+pattern ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = AccessFlagBits 0x00000400
 -- | 'ACCESS_TRANSFER_READ_BIT' specifies read access to an image or buffer
 -- in a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy>
 -- operation. Such access occurs in the
--- 'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR'
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT'
 -- pipeline stage.
-pattern ACCESS_TRANSFER_READ_BIT                    = AccessFlagBits 0x00000800
+pattern ACCESS_TRANSFER_READ_BIT                  = AccessFlagBits 0x00000800
 -- | 'ACCESS_TRANSFER_WRITE_BIT' specifies write access to an image or buffer
 -- in a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear>
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy>
 -- operation. Such access occurs in the
--- 'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR'
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT'
 -- pipeline stage.
-pattern ACCESS_TRANSFER_WRITE_BIT                   = AccessFlagBits 0x00001000
+pattern ACCESS_TRANSFER_WRITE_BIT                 = AccessFlagBits 0x00001000
 -- | 'ACCESS_HOST_READ_BIT' specifies read access by a host operation.
 -- Accesses of this type are not performed through a resource, but directly
 -- on memory. Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
 -- pipeline stage.
-pattern ACCESS_HOST_READ_BIT                        = AccessFlagBits 0x00002000
+pattern ACCESS_HOST_READ_BIT                      = AccessFlagBits 0x00002000
 -- | 'ACCESS_HOST_WRITE_BIT' specifies write access by a host operation.
 -- Accesses of this type are not performed through a resource, but directly
 -- on memory. Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_HOST_BIT'
 -- pipeline stage.
-pattern ACCESS_HOST_WRITE_BIT                       = AccessFlagBits 0x00004000
+pattern ACCESS_HOST_WRITE_BIT                     = AccessFlagBits 0x00004000
 -- | 'ACCESS_MEMORY_READ_BIT' specifies all read accesses. It is always valid
 -- in any access mask, and is treated as equivalent to setting all @READ@
 -- access flags that are valid where it is used.
-pattern ACCESS_MEMORY_READ_BIT                      = AccessFlagBits 0x00008000
+pattern ACCESS_MEMORY_READ_BIT                    = AccessFlagBits 0x00008000
 -- | 'ACCESS_MEMORY_WRITE_BIT' specifies all write accesses. It is always
 -- valid in any access mask, and is treated as equivalent to setting all
 -- @WRITE@ access flags that are valid where it is used.
-pattern ACCESS_MEMORY_WRITE_BIT                     = AccessFlagBits 0x00010000
--- | 'ACCESS_NONE_KHR' specifies no accesses.
-pattern ACCESS_NONE_KHR                             = AccessFlagBits 0x00000000
+pattern ACCESS_MEMORY_WRITE_BIT                   = AccessFlagBits 0x00010000
 -- | 'ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV' specifies writes to the target
 -- command buffer:VkBuffer preprocess outputs in
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
 -- pipeline stage.
-pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV      = AccessFlagBits 0x00040000
+pattern ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV    = AccessFlagBits 0x00040000
 -- | 'ACCESS_COMMAND_PREPROCESS_READ_BIT_NV' specifies reads from buffer
 -- inputs to
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV'
 -- pipeline stage.
-pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV       = AccessFlagBits 0x00020000
+pattern ACCESS_COMMAND_PREPROCESS_READ_BIT_NV     = AccessFlagBits 0x00020000
 -- | 'ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' specifies read
 -- access to a fragment shading rate attachment during rasterization. Such
 -- access occurs in the
@@ -337,16 +335,16 @@
 -- pipeline stage.
 pattern ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = AccessFlagBits 0x00800000
 -- | 'ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
 -- during dynamic
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations>
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
 -- pipeline stage.
-pattern ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT    = AccessFlagBits 0x01000000
+pattern ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT  = AccessFlagBits 0x01000000
 -- | 'ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access to
 -- an acceleration structure or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
 -- as part of a build or copy command. Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 -- pipeline stage.
@@ -354,18 +352,18 @@
 -- | 'ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR' specifies read access to an
 -- acceleration structure as part of a trace, build, or copy command, or to
 -- an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
 -- as part of a build command. Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR'
 -- pipeline stage or
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 -- pipeline stage.
-pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR  = AccessFlagBits 0x00200000
+pattern ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = AccessFlagBits 0x00200000
 -- | 'ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read access
 -- to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachments>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachments>,
 -- including
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
 -- Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT'
 -- pipeline stage.
@@ -374,7 +372,7 @@
 -- predicate as part of conditional rendering. Such access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT'
 -- pipeline stage.
-pattern ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT   = AccessFlagBits 0x00100000
+pattern ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = AccessFlagBits 0x00100000
 -- | 'ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' specifies write access
 -- to a transform feedback counter buffer which is written when
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'
@@ -394,7 +392,9 @@
 -- access occurs in the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT'
 -- pipeline stage.
-pattern ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT     = AccessFlagBits 0x02000000
+pattern ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT   = AccessFlagBits 0x02000000
+-- | 'ACCESS_NONE' specifies no accesses.
+pattern ACCESS_NONE                               = AccessFlagBits 0x00000000
 
 conNameAccessFlagBits :: String
 conNameAccessFlagBits = "AccessFlagBits"
@@ -404,35 +404,35 @@
 
 showTableAccessFlagBits :: [(AccessFlagBits, String)]
 showTableAccessFlagBits =
-  [ (ACCESS_INDIRECT_COMMAND_READ_BIT           , "INDIRECT_COMMAND_READ_BIT")
-  , (ACCESS_INDEX_READ_BIT                      , "INDEX_READ_BIT")
-  , (ACCESS_VERTEX_ATTRIBUTE_READ_BIT           , "VERTEX_ATTRIBUTE_READ_BIT")
-  , (ACCESS_UNIFORM_READ_BIT                    , "UNIFORM_READ_BIT")
-  , (ACCESS_INPUT_ATTACHMENT_READ_BIT           , "INPUT_ATTACHMENT_READ_BIT")
-  , (ACCESS_SHADER_READ_BIT                     , "SHADER_READ_BIT")
-  , (ACCESS_SHADER_WRITE_BIT                    , "SHADER_WRITE_BIT")
-  , (ACCESS_COLOR_ATTACHMENT_READ_BIT           , "COLOR_ATTACHMENT_READ_BIT")
-  , (ACCESS_COLOR_ATTACHMENT_WRITE_BIT          , "COLOR_ATTACHMENT_WRITE_BIT")
-  , (ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT   , "DEPTH_STENCIL_ATTACHMENT_READ_BIT")
-  , (ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT  , "DEPTH_STENCIL_ATTACHMENT_WRITE_BIT")
-  , (ACCESS_TRANSFER_READ_BIT                   , "TRANSFER_READ_BIT")
-  , (ACCESS_TRANSFER_WRITE_BIT                  , "TRANSFER_WRITE_BIT")
-  , (ACCESS_HOST_READ_BIT                       , "HOST_READ_BIT")
-  , (ACCESS_HOST_WRITE_BIT                      , "HOST_WRITE_BIT")
-  , (ACCESS_MEMORY_READ_BIT                     , "MEMORY_READ_BIT")
-  , (ACCESS_MEMORY_WRITE_BIT                    , "MEMORY_WRITE_BIT")
-  , (ACCESS_NONE_KHR                            , "NONE_KHR")
-  , (ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV     , "COMMAND_PREPROCESS_WRITE_BIT_NV")
-  , (ACCESS_COMMAND_PREPROCESS_READ_BIT_NV      , "COMMAND_PREPROCESS_READ_BIT_NV")
+  [ (ACCESS_INDIRECT_COMMAND_READ_BIT         , "INDIRECT_COMMAND_READ_BIT")
+  , (ACCESS_INDEX_READ_BIT                    , "INDEX_READ_BIT")
+  , (ACCESS_VERTEX_ATTRIBUTE_READ_BIT         , "VERTEX_ATTRIBUTE_READ_BIT")
+  , (ACCESS_UNIFORM_READ_BIT                  , "UNIFORM_READ_BIT")
+  , (ACCESS_INPUT_ATTACHMENT_READ_BIT         , "INPUT_ATTACHMENT_READ_BIT")
+  , (ACCESS_SHADER_READ_BIT                   , "SHADER_READ_BIT")
+  , (ACCESS_SHADER_WRITE_BIT                  , "SHADER_WRITE_BIT")
+  , (ACCESS_COLOR_ATTACHMENT_READ_BIT         , "COLOR_ATTACHMENT_READ_BIT")
+  , (ACCESS_COLOR_ATTACHMENT_WRITE_BIT        , "COLOR_ATTACHMENT_WRITE_BIT")
+  , (ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT , "DEPTH_STENCIL_ATTACHMENT_READ_BIT")
+  , (ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, "DEPTH_STENCIL_ATTACHMENT_WRITE_BIT")
+  , (ACCESS_TRANSFER_READ_BIT                 , "TRANSFER_READ_BIT")
+  , (ACCESS_TRANSFER_WRITE_BIT                , "TRANSFER_WRITE_BIT")
+  , (ACCESS_HOST_READ_BIT                     , "HOST_READ_BIT")
+  , (ACCESS_HOST_WRITE_BIT                    , "HOST_WRITE_BIT")
+  , (ACCESS_MEMORY_READ_BIT                   , "MEMORY_READ_BIT")
+  , (ACCESS_MEMORY_WRITE_BIT                  , "MEMORY_WRITE_BIT")
+  , (ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV   , "COMMAND_PREPROCESS_WRITE_BIT_NV")
+  , (ACCESS_COMMAND_PREPROCESS_READ_BIT_NV    , "COMMAND_PREPROCESS_READ_BIT_NV")
   , (ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR")
-  , (ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT   , "FRAGMENT_DENSITY_MAP_READ_BIT_EXT")
+  , (ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT , "FRAGMENT_DENSITY_MAP_READ_BIT_EXT")
   , (ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, "ACCELERATION_STRUCTURE_WRITE_BIT_KHR")
-  , (ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR , "ACCELERATION_STRUCTURE_READ_BIT_KHR")
+  , (ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR, "ACCELERATION_STRUCTURE_READ_BIT_KHR")
   , (ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, "COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT")
-  , (ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT  , "CONDITIONAL_RENDERING_READ_BIT_EXT")
+  , (ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT, "CONDITIONAL_RENDERING_READ_BIT_EXT")
   , (ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT")
   , (ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT")
-  , (ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT    , "TRANSFORM_FEEDBACK_WRITE_BIT_EXT")
+  , (ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT  , "TRANSFORM_FEEDBACK_WRITE_BIT_EXT")
+  , (ACCESS_NONE                              , "NONE")
   ]
 
 instance Show AccessFlagBits where
diff --git a/src/Vulkan/Core10/Enums/AttachmentLoadOp.hs b/src/Vulkan/Core10/Enums/AttachmentLoadOp.hs
--- a/src/Vulkan/Core10/Enums/AttachmentLoadOp.hs
+++ b/src/Vulkan/Core10/Enums/AttachmentLoadOp.hs
@@ -24,7 +24,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Pass.AttachmentDescription',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR'
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo'
 newtype AttachmentLoadOp = AttachmentLoadOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
diff --git a/src/Vulkan/Core10/Enums/AttachmentStoreOp.hs b/src/Vulkan/Core10/Enums/AttachmentStoreOp.hs
--- a/src/Vulkan/Core10/Enums/AttachmentStoreOp.hs
+++ b/src/Vulkan/Core10/Enums/AttachmentStoreOp.hs
@@ -2,7 +2,7 @@
 -- No documentation found for Chapter "AttachmentStoreOp"
 module Vulkan.Core10.Enums.AttachmentStoreOp  (AttachmentStoreOp( ATTACHMENT_STORE_OP_STORE
                                                                 , ATTACHMENT_STORE_OP_DONT_CARE
-                                                                , ATTACHMENT_STORE_OP_NONE_KHR
+                                                                , ATTACHMENT_STORE_OP_NONE
                                                                 , ..
                                                                 )) where
 
@@ -31,7 +31,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Pass.AttachmentDescription',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR'
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo'
 newtype AttachmentStoreOp = AttachmentStoreOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
@@ -50,14 +50,14 @@
 -- For attachments with a color format, this uses the access type
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_WRITE_BIT'.
 pattern ATTACHMENT_STORE_OP_DONT_CARE = AttachmentStoreOp 1
--- | 'ATTACHMENT_STORE_OP_NONE_KHR' specifies the contents within the render
--- area are not accessed by the store operation. However, if the attachment
--- was written to during the render pass, the contents of the attachment
--- will be undefined inside the render area.
-pattern ATTACHMENT_STORE_OP_NONE_KHR  = AttachmentStoreOp 1000301000
+-- | 'ATTACHMENT_STORE_OP_NONE' specifies the contents within the render area
+-- are not accessed by the store operation. However, if the attachment was
+-- written to during the render pass, the contents of the attachment will
+-- be undefined inside the render area.
+pattern ATTACHMENT_STORE_OP_NONE      = AttachmentStoreOp 1000301000
 {-# complete ATTACHMENT_STORE_OP_STORE,
              ATTACHMENT_STORE_OP_DONT_CARE,
-             ATTACHMENT_STORE_OP_NONE_KHR :: AttachmentStoreOp #-}
+             ATTACHMENT_STORE_OP_NONE :: AttachmentStoreOp #-}
 
 conNameAttachmentStoreOp :: String
 conNameAttachmentStoreOp = "AttachmentStoreOp"
@@ -69,7 +69,7 @@
 showTableAttachmentStoreOp =
   [ (ATTACHMENT_STORE_OP_STORE    , "STORE")
   , (ATTACHMENT_STORE_OP_DONT_CARE, "DONT_CARE")
-  , (ATTACHMENT_STORE_OP_NONE_KHR , "NONE_KHR")
+  , (ATTACHMENT_STORE_OP_NONE     , "NONE")
   ]
 
 instance Show AttachmentStoreOp where
diff --git a/src/Vulkan/Core10/Enums/BorderColor.hs b/src/Vulkan/Core10/Enums/BorderColor.hs
--- a/src/Vulkan/Core10/Enums/BorderColor.hs
+++ b/src/Vulkan/Core10/Enums/BorderColor.hs
@@ -25,7 +25,7 @@
 -- = Description
 --
 -- These colors are described in detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>.
 --
 -- = See Also
 --
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
@@ -29,9 +29,9 @@
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features Physical Device Features>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features Physical Device Features>
 -- for details of the sparse memory features supported on a device.
 --
 -- = See Also
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
@@ -45,7 +45,7 @@
 
 -- | 'BUFFER_USAGE_TRANSFER_SRC_BIT' specifies that the buffer /can/ be used
 -- as the source of a /transfer command/ (see the definition of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).
 pattern BUFFER_USAGE_TRANSFER_SRC_BIT                          = BufferUsageFlagBits 0x00000001
 -- | 'BUFFER_USAGE_TRANSFER_DST_BIT' specifies that the buffer /can/ be used
 -- as the destination of a transfer command.
@@ -97,7 +97,7 @@
 pattern BUFFER_USAGE_INDIRECT_BUFFER_BIT                       = BufferUsageFlagBits 0x00000100
 -- | 'BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR' specifies that the buffer is
 -- suitable for use as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table Shader Binding Table>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table Shader Binding Table>.
 pattern BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR              = BufferUsageFlagBits 0x00000400
 -- | 'BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR' specifies that the
 -- buffer is suitable for storage space for a
@@ -105,7 +105,7 @@
 pattern BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR    = BufferUsageFlagBits 0x00100000
 -- | 'BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR'
 -- specifies that the buffer is suitable for use as a read-only input to an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-building acceleration structure build>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-building acceleration structure build>.
 pattern BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = BufferUsageFlagBits 0x00080000
 -- | 'BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies that the buffer
 -- is suitable for passing as the @buffer@ parameter to
diff --git a/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs b/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ColorComponentFlagBits.hs
@@ -31,7 +31,7 @@
 -- is enabled.
 --
 -- The color write mask operation is applied only if
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
 -- is enabled for the respective attachment. Otherwise the color write mask
 -- is ignored and writes to all components of the attachment are disabled.
 --
diff --git a/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs b/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandBufferResetFlagBits.hs
@@ -34,7 +34,7 @@
 -- returned to the parent command pool. If this flag is not set, then the
 -- command buffer /may/ hold onto memory resources and reuse them when
 -- recording commands. @commandBuffer@ is moved to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>.
 pattern COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = CommandBufferResetFlagBits 0x00000001
 
 conNameCommandBufferResetFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs b/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/CommandPoolCreateFlagBits.hs
@@ -39,7 +39,7 @@
 pattern COMMAND_POOL_CREATE_TRANSIENT_BIT            = CommandPoolCreateFlagBits 0x00000001
 -- | 'COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT' allows any command buffer
 -- allocated from a pool to be individually reset to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>;
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle initial state>;
 -- either by calling 'Vulkan.Core10.CommandBuffer.resetCommandBuffer', or
 -- via the implicit reset when calling
 -- 'Vulkan.Core10.CommandBuffer.beginCommandBuffer'. If this flag is not
diff --git a/src/Vulkan/Core10/Enums/CompareOp.hs b/src/Vulkan/Core10/Enums/CompareOp.hs
--- a/src/Vulkan/Core10/Enums/CompareOp.hs
+++ b/src/Vulkan/Core10/Enums/CompareOp.hs
@@ -28,7 +28,9 @@
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',
 -- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
 -- 'Vulkan.Core10.Pipeline.StencilOpState',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthCompareOpEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilOpEXT'
 newtype CompareOp = CompareOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
diff --git a/src/Vulkan/Core10/Enums/ComponentSwizzle.hs b/src/Vulkan/Core10/Enums/ComponentSwizzle.hs
--- a/src/Vulkan/Core10/Enums/ComponentSwizzle.hs
+++ b/src/Vulkan/Core10/Enums/ComponentSwizzle.hs
@@ -55,7 +55,7 @@
 -- | 'COMPONENT_SWIZZLE_ONE' specifies that the component is set to either 1
 -- or 1.0, depending on whether the type of the image view format is
 -- integer or floating-point respectively, as determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-definition Format Definition>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-definition Format Definition>
 -- section for each 'Vulkan.Core10.Enums.Format.Format'.
 pattern COMPONENT_SWIZZLE_ONE      = ComponentSwizzle 2
 -- | 'COMPONENT_SWIZZLE_R' specifies that the component is set to the value
diff --git a/src/Vulkan/Core10/Enums/DependencyFlagBits.hs b/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
--- a/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/DependencyFlagBits.hs
@@ -32,13 +32,13 @@
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
 -- | 'DEPENDENCY_BY_REGION_BIT' specifies that dependencies will be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-local>.
 pattern DEPENDENCY_BY_REGION_BIT    = DependencyFlagBits 0x00000001
 -- | 'DEPENDENCY_VIEW_LOCAL_BIT' specifies that a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass has more than one view>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass has more than one view>.
 pattern DEPENDENCY_VIEW_LOCAL_BIT   = DependencyFlagBits 0x00000002
 -- | 'DEPENDENCY_DEVICE_GROUP_BIT' specifies that dependencies are
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-device-local-dependencies non-device-local>.
 pattern DEPENDENCY_DEVICE_GROUP_BIT = DependencyFlagBits 0x00000004
 
 conNameDependencyFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/DescriptorType.hs b/src/Vulkan/Core10/Enums/DescriptorType.hs
--- a/src/Vulkan/Core10/Enums/DescriptorType.hs
+++ b/src/Vulkan/Core10/Enums/DescriptorType.hs
@@ -14,7 +14,7 @@
                                                           , DESCRIPTOR_TYPE_MUTABLE_VALVE
                                                           , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
                                                           , DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
-                                                          , DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
+                                                          , DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
                                                           , ..
                                                           )) where
 
@@ -33,43 +33,43 @@
 -- = Description
 --
 -- -   'DESCRIPTOR_TYPE_SAMPLER' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampler sampler descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampler sampler descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-combinedimagesampler combined image sampler descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-combinedimagesampler combined image sampler descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_SAMPLED_IMAGE' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_IMAGE' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_UNIFORM_BUFFER' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_BUFFER' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic dynamic uniform buffer descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbufferdynamic dynamic uniform buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic dynamic storage buffer descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebufferdynamic dynamic storage buffer descriptor>.
 --
 -- -   'DESCRIPTOR_TYPE_INPUT_ATTACHMENT' specifies an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inputattachment input attachment descriptor>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inputattachment input attachment descriptor>.
 --
--- -   'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT' specifies an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>.
+-- -   'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK' specifies an
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>.
 --
 -- -   'DESCRIPTOR_TYPE_MUTABLE_VALVE' specifies a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-mutable descriptor of mutable type>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-mutable descriptor of mutable type>.
 --
 -- When a descriptor set is updated via elements of
 -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet', members of
@@ -109,10 +109,10 @@
 --     is accessed.
 --
 -- When updating descriptors with a @descriptorType@ of
--- 'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT', none of the @pImageInfo@,
+-- 'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK', none of the @pImageInfo@,
 -- @pBufferInfo@, or @pTexelBufferView@ members are accessed, instead the
 -- source data of the descriptor update operation is taken from the
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT'
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock'
 -- structure in the @pNext@ chain of
 -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'. When updating
 -- descriptors with a @descriptorType@ of
@@ -170,8 +170,8 @@
 pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV  = DescriptorType 1000165000
 -- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR"
 pattern DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = DescriptorType 1000150000
--- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"
-pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT   = DescriptorType 1000138000
+-- No documentation found for Nested "VkDescriptorType" "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK"
+pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK       = DescriptorType 1000138000
 {-# complete DESCRIPTOR_TYPE_SAMPLER,
              DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
              DESCRIPTOR_TYPE_SAMPLED_IMAGE,
@@ -186,7 +186,7 @@
              DESCRIPTOR_TYPE_MUTABLE_VALVE,
              DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV,
              DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR,
-             DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT :: DescriptorType #-}
+             DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK :: DescriptorType #-}
 
 conNameDescriptorType :: String
 conNameDescriptorType = "DescriptorType"
@@ -210,7 +210,7 @@
   , (DESCRIPTOR_TYPE_MUTABLE_VALVE             , "MUTABLE_VALVE")
   , (DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV , "ACCELERATION_STRUCTURE_NV")
   , (DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, "ACCELERATION_STRUCTURE_KHR")
-  , (DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT  , "INLINE_UNIFORM_BLOCK_EXT")
+  , (DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK      , "INLINE_UNIFORM_BLOCK")
   ]
 
 instance Show DescriptorType where
diff --git a/src/Vulkan/Core10/Enums/DynamicState.hs b/src/Vulkan/Core10/Enums/DynamicState.hs
--- a/src/Vulkan/Core10/Enums/DynamicState.hs
+++ b/src/Vulkan/Core10/Enums/DynamicState.hs
@@ -10,24 +10,9 @@
                                                       , DYNAMIC_STATE_STENCIL_WRITE_MASK
                                                       , DYNAMIC_STATE_STENCIL_REFERENCE
                                                       , DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
-                                                      , DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
                                                       , DYNAMIC_STATE_LOGIC_OP_EXT
-                                                      , DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT
-                                                      , DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT
                                                       , DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
                                                       , DYNAMIC_STATE_VERTEX_INPUT_EXT
-                                                      , DYNAMIC_STATE_STENCIL_OP_EXT
-                                                      , DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT
-                                                      , DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT
-                                                      , DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT
-                                                      , DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT
-                                                      , DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT
-                                                      , DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
-                                                      , DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT
-                                                      , DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT
-                                                      , DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
-                                                      , DYNAMIC_STATE_FRONT_FACE_EXT
-                                                      , DYNAMIC_STATE_CULL_MODE_EXT
                                                       , DYNAMIC_STATE_LINE_STIPPLE_EXT
                                                       , DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
                                                       , DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
@@ -37,6 +22,21 @@
                                                       , DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
                                                       , DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
                                                       , DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
+                                                      , DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
+                                                      , DYNAMIC_STATE_DEPTH_BIAS_ENABLE
+                                                      , DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
+                                                      , DYNAMIC_STATE_STENCIL_OP
+                                                      , DYNAMIC_STATE_STENCIL_TEST_ENABLE
+                                                      , DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE
+                                                      , DYNAMIC_STATE_DEPTH_COMPARE_OP
+                                                      , DYNAMIC_STATE_DEPTH_WRITE_ENABLE
+                                                      , DYNAMIC_STATE_DEPTH_TEST_ENABLE
+                                                      , DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
+                                                      , DYNAMIC_STATE_SCISSOR_WITH_COUNT
+                                                      , DYNAMIC_STATE_VIEWPORT_WITH_COUNT
+                                                      , DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
+                                                      , DYNAMIC_STATE_FRONT_FACE
+                                                      , DYNAMIC_STATE_CULL_MODE
                                                       , ..
                                                       )) where
 
@@ -140,33 +140,12 @@
 -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT'
 -- before any draw call.
 pattern DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT              = DynamicState 1000381000
--- | 'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT' specifies that the
--- @primitiveRestartEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
--- before any drawing commands.
-pattern DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT        = DynamicState 1000377004
 -- | 'DYNAMIC_STATE_LOGIC_OP_EXT' specifies that the @logicOp@ state in
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo' will be
 -- ignored and /must/ be set dynamically with
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetLogicOpEXT'
 -- before any drawing commands.
 pattern DYNAMIC_STATE_LOGIC_OP_EXT                        = DynamicState 1000377003
--- | 'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT' specifies that the
--- @depthBiasEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
--- before any drawing commands.
-pattern DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT               = DynamicState 1000377002
--- | 'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT' specifies that the
--- @rasterizerDiscardEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
--- before any drawing commands.
-pattern DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT       = DynamicState 1000377001
 -- | 'DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT' specifies that the
 -- @patchControlPoints@ state in
 -- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo' will be
@@ -179,90 +158,6 @@
 -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
 -- before any drawing commands
 pattern DYNAMIC_STATE_VERTEX_INPUT_EXT                    = DynamicState 1000352000
--- | 'DYNAMIC_STATE_STENCIL_OP_EXT' specifies that the @failOp@, @passOp@,
--- @depthFailOp@, and @compareOp@ states in
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both
--- @front@ and @back@ will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilOpEXT'
--- before any draws are performed with a pipeline state with
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
--- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
-pattern DYNAMIC_STATE_STENCIL_OP_EXT                      = DynamicState 1000267011
--- | 'DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT' specifies that the
--- @stencilTestEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT             = DynamicState 1000267010
--- | 'DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT' specifies that the
--- @depthBoundsTestEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT        = DynamicState 1000267009
--- | 'DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT' specifies that the @depthCompareOp@
--- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthCompareOpEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT                = DynamicState 1000267008
--- | 'DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT' specifies that the
--- @depthWriteEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT              = DynamicState 1000267007
--- | 'DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT' specifies that the
--- @depthTestEnable@ state in
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthTestEnableEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT               = DynamicState 1000267006
--- | 'DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT' specifies that the
--- @stride@ state in 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'
--- will be ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
--- before any draw call.
-pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT     = DynamicState 1000267005
--- | 'DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT' specifies that the @scissorCount@
--- and @pScissors@ state in
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
--- and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT              = DynamicState 1000267004
--- | 'DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT' specifies that the
--- @viewportCount@ and @pViewports@ state in
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
--- and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
--- before any draw call.
-pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT             = DynamicState 1000267003
--- | 'DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT' specifies that the @topology@
--- state in 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'
--- only specifies the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>,
--- and the specific topology order and adjacency /must/ be set dynamically
--- with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
--- before any drawing commands.
-pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT              = DynamicState 1000267002
--- | 'DYNAMIC_STATE_FRONT_FACE_EXT' specifies that the @frontFace@ state in
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetFrontFaceEXT'
--- before any drawing commands.
-pattern DYNAMIC_STATE_FRONT_FACE_EXT                      = DynamicState 1000267001
--- | 'DYNAMIC_STATE_CULL_MODE_EXT' specifies that the @cullMode@ state in
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
--- ignored and /must/ be set dynamically with
--- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetCullModeEXT'
--- before any drawing commands.
-pattern DYNAMIC_STATE_CULL_MODE_EXT                       = DynamicState 1000267000
 -- | 'DYNAMIC_STATE_LINE_STIPPLE_EXT' specifies that the @lineStippleFactor@
 -- and @lineStipplePattern@ state in
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'
@@ -343,6 +238,108 @@
 -- member @viewportScalingEnable@ set to
 -- 'Vulkan.Core10.FundamentalTypes.TRUE'
 pattern DYNAMIC_STATE_VIEWPORT_W_SCALING_NV               = DynamicState 1000087000
+-- | 'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE' specifies that the
+-- @primitiveRestartEnable@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE            = DynamicState 1000377004
+-- | 'DYNAMIC_STATE_DEPTH_BIAS_ENABLE' specifies that the @depthBiasEnable@
+-- state in 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'
+-- will be ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_DEPTH_BIAS_ENABLE                   = DynamicState 1000377002
+-- | 'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE' specifies that the
+-- @rasterizerDiscardEnable@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE           = DynamicState 1000377001
+-- | 'DYNAMIC_STATE_STENCIL_OP' specifies that the @failOp@, @passOp@,
+-- @depthFailOp@, and @compareOp@ states in
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' for both
+-- @front@ and @back@ will be ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp'
+-- before any draws are performed with a pipeline state with
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' member
+-- @stencilTestEnable@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'
+pattern DYNAMIC_STATE_STENCIL_OP                          = DynamicState 1000267011
+-- | 'DYNAMIC_STATE_STENCIL_TEST_ENABLE' specifies that the
+-- @stencilTestEnable@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable'
+-- before any draw call.
+pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE                 = DynamicState 1000267010
+-- | 'DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE' specifies that the
+-- @depthBoundsTestEnable@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable'
+-- before any draw call.
+pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE            = DynamicState 1000267009
+-- | 'DYNAMIC_STATE_DEPTH_COMPARE_OP' specifies that the @depthCompareOp@
+-- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
+-- will be ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp'
+-- before any draw call.
+pattern DYNAMIC_STATE_DEPTH_COMPARE_OP                    = DynamicState 1000267008
+-- | 'DYNAMIC_STATE_DEPTH_WRITE_ENABLE' specifies that the @depthWriteEnable@
+-- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
+-- will be ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthWriteEnable'
+-- before any draw call.
+pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE                  = DynamicState 1000267007
+-- | 'DYNAMIC_STATE_DEPTH_TEST_ENABLE' specifies that the @depthTestEnable@
+-- state in 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'
+-- will be ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable'
+-- before any draw call.
+pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE                   = DynamicState 1000267006
+-- | 'DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE' specifies that the @stride@
+-- state in 'Vulkan.Core10.Pipeline.VertexInputBindingDescription' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2'
+-- before any draw call.
+pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE         = DynamicState 1000267005
+-- | 'DYNAMIC_STATE_SCISSOR_WITH_COUNT' specifies that the @scissorCount@ and
+-- @pScissors@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
+-- and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
+-- before any draw call.
+pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT                  = DynamicState 1000267004
+-- | 'DYNAMIC_STATE_VIEWPORT_WITH_COUNT' specifies that the @viewportCount@
+-- and @pViewports@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo' will be ignored
+-- and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
+-- before any draw call.
+pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT                 = DynamicState 1000267003
+-- | 'DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' specifies that the @topology@ state
+-- in 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo' only
+-- specifies the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-topology-class topology class>,
+-- and the specific topology order and adjacency /must/ be set dynamically
+-- with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY                  = DynamicState 1000267002
+-- | 'DYNAMIC_STATE_FRONT_FACE' specifies that the @frontFace@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_FRONT_FACE                          = DynamicState 1000267001
+-- | 'DYNAMIC_STATE_CULL_MODE' specifies that the @cullMode@ state in
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo' will be
+-- ignored and /must/ be set dynamically with
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode'
+-- before any drawing commands.
+pattern DYNAMIC_STATE_CULL_MODE                           = DynamicState 1000267000
 {-# complete DYNAMIC_STATE_VIEWPORT,
              DYNAMIC_STATE_SCISSOR,
              DYNAMIC_STATE_LINE_WIDTH,
@@ -353,24 +350,9 @@
              DYNAMIC_STATE_STENCIL_WRITE_MASK,
              DYNAMIC_STATE_STENCIL_REFERENCE,
              DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT,
-             DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT,
              DYNAMIC_STATE_LOGIC_OP_EXT,
-             DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT,
-             DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT,
              DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT,
              DYNAMIC_STATE_VERTEX_INPUT_EXT,
-             DYNAMIC_STATE_STENCIL_OP_EXT,
-             DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT,
-             DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT,
-             DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT,
-             DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT,
-             DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT,
-             DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT,
-             DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT,
-             DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT,
-             DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT,
-             DYNAMIC_STATE_FRONT_FACE_EXT,
-             DYNAMIC_STATE_CULL_MODE_EXT,
              DYNAMIC_STATE_LINE_STIPPLE_EXT,
              DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR,
              DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV,
@@ -379,7 +361,22 @@
              DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR,
              DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT,
              DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
-             DYNAMIC_STATE_VIEWPORT_W_SCALING_NV :: DynamicState #-}
+             DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
+             DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE,
+             DYNAMIC_STATE_DEPTH_BIAS_ENABLE,
+             DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE,
+             DYNAMIC_STATE_STENCIL_OP,
+             DYNAMIC_STATE_STENCIL_TEST_ENABLE,
+             DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE,
+             DYNAMIC_STATE_DEPTH_COMPARE_OP,
+             DYNAMIC_STATE_DEPTH_WRITE_ENABLE,
+             DYNAMIC_STATE_DEPTH_TEST_ENABLE,
+             DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE,
+             DYNAMIC_STATE_SCISSOR_WITH_COUNT,
+             DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
+             DYNAMIC_STATE_PRIMITIVE_TOPOLOGY,
+             DYNAMIC_STATE_FRONT_FACE,
+             DYNAMIC_STATE_CULL_MODE :: DynamicState #-}
 
 conNameDynamicState :: String
 conNameDynamicState = "DynamicState"
@@ -399,24 +396,9 @@
   , (DYNAMIC_STATE_STENCIL_WRITE_MASK                 , "STENCIL_WRITE_MASK")
   , (DYNAMIC_STATE_STENCIL_REFERENCE                  , "STENCIL_REFERENCE")
   , (DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT             , "COLOR_WRITE_ENABLE_EXT")
-  , (DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT       , "PRIMITIVE_RESTART_ENABLE_EXT")
   , (DYNAMIC_STATE_LOGIC_OP_EXT                       , "LOGIC_OP_EXT")
-  , (DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT              , "DEPTH_BIAS_ENABLE_EXT")
-  , (DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT      , "RASTERIZER_DISCARD_ENABLE_EXT")
   , (DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT           , "PATCH_CONTROL_POINTS_EXT")
   , (DYNAMIC_STATE_VERTEX_INPUT_EXT                   , "VERTEX_INPUT_EXT")
-  , (DYNAMIC_STATE_STENCIL_OP_EXT                     , "STENCIL_OP_EXT")
-  , (DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT            , "STENCIL_TEST_ENABLE_EXT")
-  , (DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT       , "DEPTH_BOUNDS_TEST_ENABLE_EXT")
-  , (DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT               , "DEPTH_COMPARE_OP_EXT")
-  , (DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT             , "DEPTH_WRITE_ENABLE_EXT")
-  , (DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT              , "DEPTH_TEST_ENABLE_EXT")
-  , (DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT    , "VERTEX_INPUT_BINDING_STRIDE_EXT")
-  , (DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT             , "SCISSOR_WITH_COUNT_EXT")
-  , (DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT            , "VIEWPORT_WITH_COUNT_EXT")
-  , (DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT             , "PRIMITIVE_TOPOLOGY_EXT")
-  , (DYNAMIC_STATE_FRONT_FACE_EXT                     , "FRONT_FACE_EXT")
-  , (DYNAMIC_STATE_CULL_MODE_EXT                      , "CULL_MODE_EXT")
   , (DYNAMIC_STATE_LINE_STIPPLE_EXT                   , "LINE_STIPPLE_EXT")
   , (DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR          , "FRAGMENT_SHADING_RATE_KHR")
   , (DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV               , "EXCLUSIVE_SCISSOR_NV")
@@ -426,6 +408,21 @@
   , (DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT               , "SAMPLE_LOCATIONS_EXT")
   , (DYNAMIC_STATE_DISCARD_RECTANGLE_EXT              , "DISCARD_RECTANGLE_EXT")
   , (DYNAMIC_STATE_VIEWPORT_W_SCALING_NV              , "VIEWPORT_W_SCALING_NV")
+  , (DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE           , "PRIMITIVE_RESTART_ENABLE")
+  , (DYNAMIC_STATE_DEPTH_BIAS_ENABLE                  , "DEPTH_BIAS_ENABLE")
+  , (DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE          , "RASTERIZER_DISCARD_ENABLE")
+  , (DYNAMIC_STATE_STENCIL_OP                         , "STENCIL_OP")
+  , (DYNAMIC_STATE_STENCIL_TEST_ENABLE                , "STENCIL_TEST_ENABLE")
+  , (DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE           , "DEPTH_BOUNDS_TEST_ENABLE")
+  , (DYNAMIC_STATE_DEPTH_COMPARE_OP                   , "DEPTH_COMPARE_OP")
+  , (DYNAMIC_STATE_DEPTH_WRITE_ENABLE                 , "DEPTH_WRITE_ENABLE")
+  , (DYNAMIC_STATE_DEPTH_TEST_ENABLE                  , "DEPTH_TEST_ENABLE")
+  , (DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE        , "VERTEX_INPUT_BINDING_STRIDE")
+  , (DYNAMIC_STATE_SCISSOR_WITH_COUNT                 , "SCISSOR_WITH_COUNT")
+  , (DYNAMIC_STATE_VIEWPORT_WITH_COUNT                , "VIEWPORT_WITH_COUNT")
+  , (DYNAMIC_STATE_PRIMITIVE_TOPOLOGY                 , "PRIMITIVE_TOPOLOGY")
+  , (DYNAMIC_STATE_FRONT_FACE                         , "FRONT_FACE")
+  , (DYNAMIC_STATE_CULL_MODE                          , "CULL_MODE")
   ]
 
 instance Show DynamicState where
diff --git a/src/Vulkan/Core10/Enums/EventCreateFlagBits.hs b/src/Vulkan/Core10/Enums/EventCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/EventCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/EventCreateFlagBits.hs
@@ -1,7 +1,7 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "EventCreateFlagBits"
 module Vulkan.Core10.Enums.EventCreateFlagBits  ( EventCreateFlags
-                                                , EventCreateFlagBits( EVENT_CREATE_DEVICE_ONLY_BIT_KHR
+                                                , EventCreateFlagBits( EVENT_CREATE_DEVICE_ONLY_BIT
                                                                      , ..
                                                                      )
                                                 ) where
@@ -28,18 +28,18 @@
 newtype EventCreateFlagBits = EventCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'EVENT_CREATE_DEVICE_ONLY_BIT_KHR' specifies that host event commands
--- will not be used with this event.
-pattern EVENT_CREATE_DEVICE_ONLY_BIT_KHR = EventCreateFlagBits 0x00000001
+-- | 'EVENT_CREATE_DEVICE_ONLY_BIT' specifies that host event commands will
+-- not be used with this event.
+pattern EVENT_CREATE_DEVICE_ONLY_BIT = EventCreateFlagBits 0x00000001
 
 conNameEventCreateFlagBits :: String
 conNameEventCreateFlagBits = "EventCreateFlagBits"
 
 enumPrefixEventCreateFlagBits :: String
-enumPrefixEventCreateFlagBits = "EVENT_CREATE_DEVICE_ONLY_BIT_KHR"
+enumPrefixEventCreateFlagBits = "EVENT_CREATE_DEVICE_ONLY_BIT"
 
 showTableEventCreateFlagBits :: [(EventCreateFlagBits, String)]
-showTableEventCreateFlagBits = [(EVENT_CREATE_DEVICE_ONLY_BIT_KHR, "")]
+showTableEventCreateFlagBits = [(EVENT_CREATE_DEVICE_ONLY_BIT, "")]
 
 instance Show EventCreateFlagBits where
   showsPrec = enumShowsPrec enumPrefixEventCreateFlagBits
diff --git a/src/Vulkan/Core10/Enums/Filter.hs b/src/Vulkan/Core10/Enums/Filter.hs
--- a/src/Vulkan/Core10/Enums/Filter.hs
+++ b/src/Vulkan/Core10/Enums/Filter.hs
@@ -20,12 +20,12 @@
 -- = Description
 --
 -- These filters are described in detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.
 --
 -- = 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_KHR_copy_commands2.BlitImageInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
 -- 'Vulkan.Core10.Sampler.SamplerCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'
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
@@ -185,26 +185,6 @@
                                           , FORMAT_ASTC_12x10_SRGB_BLOCK
                                           , FORMAT_ASTC_12x12_UNORM_BLOCK
                                           , FORMAT_ASTC_12x12_SRGB_BLOCK
-                                          , FORMAT_A4B4G4R4_UNORM_PACK16_EXT
-                                          , FORMAT_A4R4G4B4_UNORM_PACK16_EXT
-                                          , FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT
-                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT
-                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT
-                                          , FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT
-                                          , FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT
-                                          , FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT
                                           , FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
                                           , FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG
                                           , FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG
@@ -213,6 +193,26 @@
                                           , FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG
                                           , FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG
                                           , FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG
+                                          , FORMAT_ASTC_12x12_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_12x10_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_10x10_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_10x8_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_10x6_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_10x5_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_8x8_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_8x6_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_8x5_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_6x6_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_6x5_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_5x5_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_5x4_SFLOAT_BLOCK
+                                          , FORMAT_ASTC_4x4_SFLOAT_BLOCK
+                                          , FORMAT_A4B4G4R4_UNORM_PACK16
+                                          , FORMAT_A4R4G4B4_UNORM_PACK16
+                                          , FORMAT_G16_B16R16_2PLANE_444_UNORM
+                                          , FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16
+                                          , FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16
+                                          , FORMAT_G8_B8R8_2PLANE_444_UNORM
                                           , FORMAT_G16_B16_R16_3PLANE_444_UNORM
                                           , FORMAT_G16_B16R16_2PLANE_422_UNORM
                                           , FORMAT_G16_B16_R16_3PLANE_422_UNORM
@@ -270,7 +270,7 @@
 -- 'Vulkan.Core10.Pass.AttachmentDescription',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.GeometryTrianglesNV',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
@@ -279,7 +279,7 @@
 -- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_custom_border_color.SamplerCustomBorderColorCreateInfoEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo',
 -- 'Vulkan.Extensions.VK_KHR_surface.SurfaceFormatKHR',
@@ -833,9 +833,9 @@
 -- packed unsigned floating-point format that has a 10-bit B component in
 -- bits 22..31, an 11-bit G component in bits 11..21, an 11-bit R component
 -- in bits 0..10. See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp10>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-fp10>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fp11>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-fp11>.
 pattern FORMAT_B10G11R11_UFLOAT_PACK32            = Format 122
 -- | 'FORMAT_E5B9G9R9_UFLOAT_PACK32' specifies a three-component, 32-bit
 -- packed unsigned floating-point format that has a 5-bit shared exponent
@@ -1120,127 +1120,6 @@
 -- 12×12 rectangle of unsigned normalized RGBA texel data with sRGB
 -- nonlinear encoding applied to the RGB components.
 pattern FORMAT_ASTC_12x12_SRGB_BLOCK              = Format 184
--- | 'FORMAT_A4B4G4R4_UNORM_PACK16_EXT' specifies a four-component, 16-bit
--- packed unsigned normalized format that has a 4-bit A component in bits
--- 12..15, a 4-bit B component in bits 8..11, a 4-bit G component in bits
--- 4..7, and a 4-bit R component in bits 0..3.
-pattern FORMAT_A4B4G4R4_UNORM_PACK16_EXT          = Format 1000340001
--- | 'FORMAT_A4R4G4B4_UNORM_PACK16_EXT' specifies a four-component, 16-bit
--- packed unsigned normalized format that has a 4-bit A component in bits
--- 12..15, a 4-bit R component in bits 8..11, a 4-bit G component in bits
--- 4..7, and a 4-bit B component in bits 0..3.
-pattern FORMAT_A4R4G4B4_UNORM_PACK16_EXT          = Format 1000340000
--- | 'FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT' specifies an unsigned
--- normalized /multi-planar format/ that has a 16-bit G component in each
--- 16-bit word of plane 0, and a two-component, 32-bit BR plane 1
--- consisting of a 16-bit B component in the word in bytes 0..1, and a
--- 16-bit R component in the word in bytes 2..3. Both planes have the same
--- dimensions and each R, G and B component contributes to a single texel.
--- The location of each plane when this image is in linear layout can be
--- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane.
-pattern FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT    = Format 1000330003
--- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT' specifies an
--- unsigned normalized /multi-planar format/ that has a 12-bit G component
--- in the top 12 bits of each 16-bit word of plane 0, and a two-component,
--- 32-bit BR plane 1 consisting of a 12-bit B component in the top 12 bits
--- of the word in bytes 0..1, and a 12-bit R component in the top 12 bits
--- of the word in bytes 2..3, the bottom 4 bits of each word unused. Both
--- planes have the same dimensions and each R, G and B component
--- contributes to a single texel. The location of each plane when this
--- image is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane.
-pattern FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = Format 1000330002
--- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT' specifies an
--- unsigned normalized /multi-planar format/ that has a 10-bit G component
--- in the top 10 bits of each 16-bit word of plane 0, and a two-component,
--- 32-bit BR plane 1 consisting of a 10-bit B component in the top 10 bits
--- of the word in bytes 0..1, and a 10-bit R component in the top 10 bits
--- of the word in bytes 2..3, the bottom 6 bits of each word unused. Both
--- planes have the same dimensions and each R, G and B component
--- contributes to a single texel. The location of each plane when this
--- image is in linear layout can be determined via
--- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane.
-pattern FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = Format 1000330001
--- | 'FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT' specifies an unsigned normalized
--- /multi-planar format/ that has an 8-bit G component in plane 0, and a
--- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
--- byte 0 and an 8-bit R component in byte 1. Both planes have the same
--- dimensions and each R, G and B component contributes to a single texel.
--- The location of each plane when this image is in linear layout can be
--- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
--- the G plane, and
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
--- the BR plane.
-pattern FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT       = Format 1000330000
--- | 'FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 12×12 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT        = Format 1000066013
--- | 'FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 12×10 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT        = Format 1000066012
--- | 'FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×10 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT        = Format 1000066011
--- | 'FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×8 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT         = Format 1000066010
--- | 'FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×6 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT         = Format 1000066009
--- | 'FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 10×5 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT         = Format 1000066008
--- | 'FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 8×8 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT          = Format 1000066007
--- | 'FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 8×6 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT          = Format 1000066006
--- | 'FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 8×5 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT          = Format 1000066005
--- | 'FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 6×6 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT          = Format 1000066004
--- | 'FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 6×5 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT          = Format 1000066003
--- | 'FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 5×5 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT          = Format 1000066002
--- | 'FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 5×4 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT          = Format 1000066001
--- | 'FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT' specifies a four-component, ASTC
--- compressed format where each 128-bit compressed texel block encodes a
--- 4×4 rectangle of signed floating-point RGBA texel data.
-pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT          = Format 1000066000
 -- | 'FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG' specifies a four-component, PVRTC
 -- compressed format where each 64-bit compressed texel block encodes a 4×4
 -- rectangle of unsigned normalized RGBA texel data with sRGB nonlinear
@@ -1277,6 +1156,127 @@
 -- compressed format where each 64-bit compressed texel block encodes an
 -- 8×4 rectangle of unsigned normalized RGBA texel data.
 pattern FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG        = Format 1000054000
+-- | 'FORMAT_ASTC_12x12_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 12×12 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK            = Format 1000066013
+-- | 'FORMAT_ASTC_12x10_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 12×10 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK            = Format 1000066012
+-- | 'FORMAT_ASTC_10x10_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 10×10 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK            = Format 1000066011
+-- | 'FORMAT_ASTC_10x8_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 10×8 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK             = Format 1000066010
+-- | 'FORMAT_ASTC_10x6_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 10×6 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK             = Format 1000066009
+-- | 'FORMAT_ASTC_10x5_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 10×5 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK             = Format 1000066008
+-- | 'FORMAT_ASTC_8x8_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 8×8 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK              = Format 1000066007
+-- | 'FORMAT_ASTC_8x6_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 8×6 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK              = Format 1000066006
+-- | 'FORMAT_ASTC_8x5_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 8×5 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK              = Format 1000066005
+-- | 'FORMAT_ASTC_6x6_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 6×6 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK              = Format 1000066004
+-- | 'FORMAT_ASTC_6x5_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 6×5 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK              = Format 1000066003
+-- | 'FORMAT_ASTC_5x5_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 5×5 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK              = Format 1000066002
+-- | 'FORMAT_ASTC_5x4_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 5×4 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK              = Format 1000066001
+-- | 'FORMAT_ASTC_4x4_SFLOAT_BLOCK' specifies a four-component, ASTC
+-- compressed format where each 128-bit compressed texel block encodes a
+-- 4×4 rectangle of signed floating-point RGBA texel data.
+pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK              = Format 1000066000
+-- | 'FORMAT_A4B4G4R4_UNORM_PACK16' specifies a four-component, 16-bit packed
+-- unsigned normalized format that has a 4-bit A component in bits 12..15,
+-- a 4-bit B component in bits 8..11, a 4-bit G component in bits 4..7, and
+-- a 4-bit R component in bits 0..3.
+pattern FORMAT_A4B4G4R4_UNORM_PACK16              = Format 1000340001
+-- | 'FORMAT_A4R4G4B4_UNORM_PACK16' specifies a four-component, 16-bit packed
+-- unsigned normalized format that has a 4-bit A component in bits 12..15,
+-- a 4-bit R component in bits 8..11, a 4-bit G component in bits 4..7, and
+-- a 4-bit B component in bits 0..3.
+pattern FORMAT_A4R4G4B4_UNORM_PACK16              = Format 1000340000
+-- | 'FORMAT_G16_B16R16_2PLANE_444_UNORM' specifies an unsigned normalized
+-- /multi-planar format/ that has a 16-bit G component in each 16-bit word
+-- of plane 0, and a two-component, 32-bit BR plane 1 consisting of a
+-- 16-bit B component in the word in bytes 0..1, and a 16-bit R component
+-- in the word in bytes 2..3. Both planes have the same dimensions and each
+-- R, G and B component contributes to a single texel. The location of each
+-- plane when this image is in linear layout can be determined via
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G16_B16R16_2PLANE_444_UNORM        = Format 1000330003
+-- | 'FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16' specifies an unsigned
+-- normalized /multi-planar format/ that has a 12-bit G component in the
+-- top 12 bits of each 16-bit word of plane 0, and a two-component, 32-bit
+-- BR plane 1 consisting of a 12-bit B component in the top 12 bits of the
+-- word in bytes 0..1, and a 12-bit R component in the top 12 bits of the
+-- word in bytes 2..3, the bottom 4 bits of each word unused. Both planes
+-- have the same dimensions and each R, G and B component contributes to a
+-- single texel. The location of each plane when this image is in linear
+-- layout can be determined via
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = Format 1000330002
+-- | 'FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16' specifies an unsigned
+-- normalized /multi-planar format/ that has a 10-bit G component in the
+-- top 10 bits of each 16-bit word of plane 0, and a two-component, 32-bit
+-- BR plane 1 consisting of a 10-bit B component in the top 10 bits of the
+-- word in bytes 0..1, and a 10-bit R component in the top 10 bits of the
+-- word in bytes 2..3, the bottom 6 bits of each word unused. Both planes
+-- have the same dimensions and each R, G and B component contributes to a
+-- single texel. The location of each plane when this image is in linear
+-- layout can be determined via
+-- 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = Format 1000330001
+-- | 'FORMAT_G8_B8R8_2PLANE_444_UNORM' specifies an unsigned normalized
+-- /multi-planar format/ that has an 8-bit G component in plane 0, and a
+-- two-component, 16-bit BR plane 1 consisting of an 8-bit B component in
+-- byte 0 and an 8-bit R component in byte 1. Both planes have the same
+-- dimensions and each R, G and B component contributes to a single texel.
+-- The location of each plane when this image is in linear layout can be
+-- determined via 'Vulkan.Core10.Image.getImageSubresourceLayout', using
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT' for
+-- the G plane, and
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT' for
+-- the BR plane.
+pattern FORMAT_G8_B8R8_2PLANE_444_UNORM           = Format 1000330000
 -- | 'FORMAT_G16_B16_R16_3PLANE_444_UNORM' specifies an unsigned normalized
 -- /multi-planar format/ that has a 16-bit G component in each 16-bit word
 -- of plane 0, a 16-bit B component in each 16-bit word of plane 1, and a
@@ -1964,26 +1964,6 @@
              FORMAT_ASTC_12x10_SRGB_BLOCK,
              FORMAT_ASTC_12x12_UNORM_BLOCK,
              FORMAT_ASTC_12x12_SRGB_BLOCK,
-             FORMAT_A4B4G4R4_UNORM_PACK16_EXT,
-             FORMAT_A4R4G4B4_UNORM_PACK16_EXT,
-             FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT,
-             FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT,
-             FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT,
-             FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT,
-             FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT,
-             FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,
              FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,
              FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
              FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
@@ -1992,6 +1972,26 @@
              FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
              FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
              FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
+             FORMAT_ASTC_12x12_SFLOAT_BLOCK,
+             FORMAT_ASTC_12x10_SFLOAT_BLOCK,
+             FORMAT_ASTC_10x10_SFLOAT_BLOCK,
+             FORMAT_ASTC_10x8_SFLOAT_BLOCK,
+             FORMAT_ASTC_10x6_SFLOAT_BLOCK,
+             FORMAT_ASTC_10x5_SFLOAT_BLOCK,
+             FORMAT_ASTC_8x8_SFLOAT_BLOCK,
+             FORMAT_ASTC_8x6_SFLOAT_BLOCK,
+             FORMAT_ASTC_8x5_SFLOAT_BLOCK,
+             FORMAT_ASTC_6x6_SFLOAT_BLOCK,
+             FORMAT_ASTC_6x5_SFLOAT_BLOCK,
+             FORMAT_ASTC_5x5_SFLOAT_BLOCK,
+             FORMAT_ASTC_5x4_SFLOAT_BLOCK,
+             FORMAT_ASTC_4x4_SFLOAT_BLOCK,
+             FORMAT_A4B4G4R4_UNORM_PACK16,
+             FORMAT_A4R4G4B4_UNORM_PACK16,
+             FORMAT_G16_B16R16_2PLANE_444_UNORM,
+             FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16,
+             FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16,
+             FORMAT_G8_B8R8_2PLANE_444_UNORM,
              FORMAT_G16_B16_R16_3PLANE_444_UNORM,
              FORMAT_G16_B16R16_2PLANE_422_UNORM,
              FORMAT_G16_B16_R16_3PLANE_422_UNORM,
@@ -2220,26 +2220,6 @@
   , (FORMAT_ASTC_12x10_SRGB_BLOCK             , "ASTC_12x10_SRGB_BLOCK")
   , (FORMAT_ASTC_12x12_UNORM_BLOCK            , "ASTC_12x12_UNORM_BLOCK")
   , (FORMAT_ASTC_12x12_SRGB_BLOCK             , "ASTC_12x12_SRGB_BLOCK")
-  , (FORMAT_A4B4G4R4_UNORM_PACK16_EXT         , "A4B4G4R4_UNORM_PACK16_EXT")
-  , (FORMAT_A4R4G4B4_UNORM_PACK16_EXT         , "A4R4G4B4_UNORM_PACK16_EXT")
-  , (FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT   , "G16_B16R16_2PLANE_444_UNORM_EXT")
-  , (FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT, "G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT")
-  , (FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT, "G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT")
-  , (FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT      , "G8_B8R8_2PLANE_444_UNORM_EXT")
-  , (FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT       , "ASTC_12x12_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT       , "ASTC_12x10_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT       , "ASTC_10x10_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT        , "ASTC_10x8_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT        , "ASTC_10x6_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT        , "ASTC_10x5_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT         , "ASTC_8x8_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT         , "ASTC_8x6_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT         , "ASTC_8x5_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT         , "ASTC_6x6_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT         , "ASTC_6x5_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT         , "ASTC_5x5_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT         , "ASTC_5x4_SFLOAT_BLOCK_EXT")
-  , (FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT         , "ASTC_4x4_SFLOAT_BLOCK_EXT")
   , (FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG        , "PVRTC2_4BPP_SRGB_BLOCK_IMG")
   , (FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG        , "PVRTC2_2BPP_SRGB_BLOCK_IMG")
   , (FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG        , "PVRTC1_4BPP_SRGB_BLOCK_IMG")
@@ -2248,6 +2228,26 @@
   , (FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG       , "PVRTC2_2BPP_UNORM_BLOCK_IMG")
   , (FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG       , "PVRTC1_4BPP_UNORM_BLOCK_IMG")
   , (FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG       , "PVRTC1_2BPP_UNORM_BLOCK_IMG")
+  , (FORMAT_ASTC_12x12_SFLOAT_BLOCK           , "ASTC_12x12_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_12x10_SFLOAT_BLOCK           , "ASTC_12x10_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_10x10_SFLOAT_BLOCK           , "ASTC_10x10_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_10x8_SFLOAT_BLOCK            , "ASTC_10x8_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_10x6_SFLOAT_BLOCK            , "ASTC_10x6_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_10x5_SFLOAT_BLOCK            , "ASTC_10x5_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_8x8_SFLOAT_BLOCK             , "ASTC_8x8_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_8x6_SFLOAT_BLOCK             , "ASTC_8x6_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_8x5_SFLOAT_BLOCK             , "ASTC_8x5_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_6x6_SFLOAT_BLOCK             , "ASTC_6x6_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_6x5_SFLOAT_BLOCK             , "ASTC_6x5_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_5x5_SFLOAT_BLOCK             , "ASTC_5x5_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_5x4_SFLOAT_BLOCK             , "ASTC_5x4_SFLOAT_BLOCK")
+  , (FORMAT_ASTC_4x4_SFLOAT_BLOCK             , "ASTC_4x4_SFLOAT_BLOCK")
+  , (FORMAT_A4B4G4R4_UNORM_PACK16             , "A4B4G4R4_UNORM_PACK16")
+  , (FORMAT_A4R4G4B4_UNORM_PACK16             , "A4R4G4B4_UNORM_PACK16")
+  , (FORMAT_G16_B16R16_2PLANE_444_UNORM       , "G16_B16R16_2PLANE_444_UNORM")
+  , (FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16, "G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16")
+  , (FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16, "G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16")
+  , (FORMAT_G8_B8R8_2PLANE_444_UNORM          , "G8_B8R8_2PLANE_444_UNORM")
   , (FORMAT_G16_B16_R16_3PLANE_444_UNORM      , "G16_B16_R16_3PLANE_444_UNORM")
   , (FORMAT_G16_B16R16_2PLANE_422_UNORM       , "G16_B16R16_2PLANE_422_UNORM")
   , (FORMAT_G16_B16_R16_3PLANE_422_UNORM      , "G16_B16_R16_3PLANE_422_UNORM")
diff --git a/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs b/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
--- a/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/FormatFeatureFlagBits.hs
@@ -51,9 +51,8 @@
 -- = Description
 --
 -- These values all have the same meaning as the equivalently named values
--- for
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR'
--- and /may/ be set in @linearTilingFeatures@, @optimalTilingFeatures@, and
+-- for 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlags2' and
+-- /may/ be set in @linearTilingFeatures@, @optimalTilingFeatures@, and
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierTilingFeatures@,
 -- specifying that the features are supported by <VkImage.html images> or
 -- <VkImageView.html image views> or
@@ -63,11 +62,11 @@
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' specifies that an image view
 --     /can/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
 --
 -- -   'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view
 --     /can/ be used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
 --
 -- -   'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image
 --     view /can/ be used as storage image that supports atomic operations.
@@ -86,13 +85,13 @@
 --
 -- -   'FORMAT_FEATURE_BLIT_SRC_BIT' specifies that an image /can/ be used
 --     as @srcImage@ for the
---     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
 --
 -- -   'FORMAT_FEATURE_BLIT_DST_BIT' specifies that an image /can/ be used
 --     as @dstImage@ for the
---     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if
 --     'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' is also set, an image view /can/
@@ -102,10 +101,10 @@
 --     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'.
 --     If 'FORMAT_FEATURE_BLIT_SRC_BIT' is also set, an image can be used
 --     as the @srcImage@ to
---     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a @filter@
---     of 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/ only
---     be exposed for formats that also support the
+--     'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a
+--     @filter@ of 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit
+--     /must/ only be exposed for formats that also support the
 --     'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' or 'FORMAT_FEATURE_BLIT_SRC_BIT'.
 --
 --     If the format being queried is a depth\/stencil format, this bit
@@ -122,13 +121,13 @@
 --
 -- -   'FORMAT_FEATURE_TRANSFER_SRC_BIT' specifies that an image /can/ be
 --     used as a source image for
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
 --
 -- -   'FORMAT_FEATURE_TRANSFER_DST_BIT' specifies that an image /can/ be
 --     used as a destination image for
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
 --     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT' specifies
 --     'Vulkan.Core10.Handles.Image' /can/ be used as a sampled image with
@@ -150,7 +149,7 @@
 --
 -- -   'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an
 --     application /can/ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     using this format as a source, and that an image of this format
 --     /can/ be used with a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
@@ -165,7 +164,7 @@
 --
 -- -   'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' specifies that an
 --     application /can/ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     using this format as a source, and that an image of this format
 --     /can/ be used with a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
@@ -176,12 +175,12 @@
 --     neither 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' nor
 --     'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the application
 --     /must/ not define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     using this format as a source.
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'
 --     specifies that an application /can/ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     using this format as a source with @chromaFilter@ set to
 --     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'.
 --
@@ -191,7 +190,7 @@
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
 --     specifies that reconstruction is explicit, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
 --     If this bit is not present, reconstruction is implicit by default.
 --
 -- -   'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'
@@ -212,11 +211,11 @@
 --
 -- -   'FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an
 --     image view /can/ be used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
 --
 -- -   'FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
 --     that an image view /can/ be used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
 --     An implementation /must/ not set this feature for formats with
 --     numeric type other than @*UINT@, or set it as a buffer feature.
 --
@@ -247,11 +246,11 @@
 -- -   'FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
 --     specifies that the format /can/ be used as the vertex format when
 --     creating an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure>
 --     ('Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@).
 --     This format /can/ also be used as the vertex format in host memory
 --     when doing
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
 --     builds.
 --
 -- = See Also
@@ -262,11 +261,11 @@
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' specifies that an image view /can/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_BIT                        = FormatFeatureFlagBits 0x00000001
 -- | 'FORMAT_FEATURE_STORAGE_IMAGE_BIT' specifies that an image view /can/ be
 -- used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
 pattern FORMAT_FEATURE_STORAGE_IMAGE_BIT                        = FormatFeatureFlagBits 0x00000002
 -- | 'FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image view
 -- /can/ be used as storage image that supports atomic operations.
@@ -303,12 +302,12 @@
 pattern FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT             = FormatFeatureFlagBits 0x00000200
 -- | 'FORMAT_FEATURE_BLIT_SRC_BIT' specifies that an image /can/ be used as
 -- @srcImage@ for the
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2' and
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
 pattern FORMAT_FEATURE_BLIT_SRC_BIT                             = FormatFeatureFlagBits 0x00000400
 -- | 'FORMAT_FEATURE_BLIT_DST_BIT' specifies that an image /can/ be used as
 -- @dstImage@ for the
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2' and
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
 pattern FORMAT_FEATURE_BLIT_DST_BIT                             = FormatFeatureFlagBits 0x00000800
 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if
@@ -317,9 +316,10 @@
 -- 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', or @mipmapMode@ set to
 -- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'. If
 -- 'FORMAT_FEATURE_BLIT_SRC_BIT' is also set, an image can be used as the
--- @srcImage@ to 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR'
--- and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a @filter@
--- of 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/ only be
+-- @srcImage@ to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2' and
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a @filter@ of
+-- 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/ only be
 -- exposed for formats that also support the
 -- 'FORMAT_FEATURE_SAMPLED_IMAGE_BIT' or 'FORMAT_FEATURE_BLIT_SRC_BIT'.
 --
@@ -337,21 +337,21 @@
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT          = FormatFeatureFlagBits 0x00001000
 -- | 'FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies that
 -- an image view /can/ be used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
 -- An implementation /must/ not set this feature for formats with numeric
 -- type other than @*UINT@, or set it as a buffer feature.
 pattern FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = FormatFeatureFlagBits 0x40000000
 -- | 'FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an image
 -- view /can/ be used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
 pattern FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT             = FormatFeatureFlagBits 0x01000000
 -- | 'FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR' specifies
 -- that the format /can/ be used as the vertex format when creating an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure>
 -- ('Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@).
 -- This format /can/ also be used as the vertex format in host memory when
 -- doing
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
 -- builds.
 pattern FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = FormatFeatureFlagBits 0x20000000
 -- No documentation found for Nested "VkFormatFeatureFlagBits" "VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG"
@@ -365,7 +365,7 @@
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT          = FormatFeatureFlagBits 0x00010000
 -- | 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' specifies that an
 -- application /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- using this format as a source, and that an image of this format /can/ be
 -- used with a
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
@@ -376,7 +376,7 @@
 -- neither 'FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT' nor
 -- 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the application
 -- /must/ not define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- using this format as a source.
 pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT               = FormatFeatureFlagBits 0x00800000
 -- | 'FORMAT_FEATURE_DISJOINT_BIT' specifies that a multi-planar image /can/
@@ -397,7 +397,7 @@
   FormatFeatureFlagBits 0x00200000
 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
 -- specifies that reconstruction is explicit, as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
 -- If this bit is not present, reconstruction is implicit by default.
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT =
   FormatFeatureFlagBits 0x00100000
@@ -408,13 +408,13 @@
   FormatFeatureFlagBits 0x00080000
 -- | 'FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'
 -- specifies that an application /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- using this format as a source with @chromaFilter@ set to
 -- 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'.
 pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = FormatFeatureFlagBits 0x00040000
 -- | 'FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an
 -- application /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- using this format as a source, and that an image of this format /can/ be
 -- used with a
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
@@ -429,13 +429,13 @@
 pattern FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = FormatFeatureFlagBits 0x00020000
 -- | 'FORMAT_FEATURE_TRANSFER_DST_BIT' specifies that an image /can/ be used
 -- as a destination image for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
 pattern FORMAT_FEATURE_TRANSFER_DST_BIT            = FormatFeatureFlagBits 0x00008000
 -- | 'FORMAT_FEATURE_TRANSFER_SRC_BIT' specifies that an image /can/ be used
 -- as a source image for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
 pattern FORMAT_FEATURE_TRANSFER_SRC_BIT            = FormatFeatureFlagBits 0x00004000
 
 conNameFormatFeatureFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/FrontFace.hs b/src/Vulkan/Core10/Enums/FrontFace.hs
--- a/src/Vulkan/Core10/Enums/FrontFace.hs
+++ b/src/Vulkan/Core10/Enums/FrontFace.hs
@@ -25,6 +25,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetFrontFaceEXT'
 newtype FrontFace = FrontFace Int32
   deriving newtype (Eq, Ord, Storable, Zero)
diff --git a/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs b/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageAspectFlagBits.hs
@@ -37,7 +37,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.DeviceImageMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.DeviceImageMemoryRequirements',
 -- 'ImageAspectFlags',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo'
 newtype ImageAspectFlagBits = ImageAspectFlagBits Flags
@@ -50,7 +50,7 @@
 -- | 'IMAGE_ASPECT_STENCIL_BIT' specifies the stencil aspect.
 pattern IMAGE_ASPECT_STENCIL_BIT            = ImageAspectFlagBits 0x00000004
 -- | 'IMAGE_ASPECT_METADATA_BIT' specifies the metadata aspect, used for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory sparse resource>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory sparse resource>
 -- operations.
 pattern IMAGE_ASPECT_METADATA_BIT           = ImageAspectFlagBits 0x00000008
 -- | 'IMAGE_ASPECT_NONE_KHR' specifies no image aspect, or the image aspect
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
@@ -40,9 +40,9 @@
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-sparseresourcefeatures Sparse Resource Features>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory-physicalfeatures Sparse Physical Device Features>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory-physicalfeatures Sparse Physical Device Features>
 -- for more details.
 --
 -- = See Also
@@ -69,7 +69,7 @@
 -- | 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that the image /can/ be used
 -- to create a 'Vulkan.Core10.Handles.ImageView' with a different format
 -- from the image. For
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 -- formats, 'IMAGE_CREATE_MUTABLE_FORMAT_BIT' specifies that a
 -- 'Vulkan.Core10.Handles.ImageView' can be created of a /plane/ of the
 -- image.
@@ -81,7 +81,7 @@
 pattern IMAGE_CREATE_CUBE_COMPATIBLE_BIT                  = ImageCreateFlagBits 0x00000010
 -- | 'IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM' specifies that an
 -- image /can/ be used in a render pass with non-zero
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>.
 -- In a renderpass with non-zero offsets, fragment density map attachments,
 -- input attachments, color attachments, depth\/stencil attachment, resolve
 -- attachments, and preserve attachments /must/ be created with
@@ -107,14 +107,14 @@
 --     additionally be read by the device during
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_VERTEX_SHADER_BIT'
 --     if
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subsampledCoarseReconstructionEarlyAccess ::subsampledCoarseReconstructionEarlyAccess>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subsampledCoarseReconstructionEarlyAccess ::subsampledCoarseReconstructionEarlyAccess>
 --     is 'Vulkan.Core10.FundamentalTypes.TRUE' and the sampler was created
 --     with @flags@ containing
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT'.
 --
 -- -   Image data read with load operations are resampled to the fragment
 --     density of the render pass if
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subsampledLoads ::subsampledLoads>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subsampledLoads ::subsampledLoads>
 --     is 'Vulkan.Core10.FundamentalTypes.TRUE'. Otherwise, values of image
 --     data are undefined.
 --
@@ -126,10 +126,10 @@
 -- sample locations when used as a depth\/stencil attachment.
 pattern IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = ImageCreateFlagBits 0x00001000
 -- | 'IMAGE_CREATE_CORNER_SAMPLED_BIT_NV' specifies that the image is a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampled corner-sampled image>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-images-corner-sampled corner-sampled image>.
 pattern IMAGE_CREATE_CORNER_SAMPLED_BIT_NV                = ImageCreateFlagBits 0x00002000
 -- | 'IMAGE_CREATE_DISJOINT_BIT' specifies that an image with a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
 -- /must/ have each plane separately bound to memory, rather than having a
 -- single memory binding for the whole image; the presence of this bit
 -- distinguishes a /disjoint image/ from an image without this bit set.
@@ -166,13 +166,13 @@
 -- creation parameters and aliased to the same memory /can/ interpret the
 -- contents of the memory consistently with each other, subject to the
 -- rules described in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section. This flag further specifies that each plane of a /disjoint/
 -- image /can/ share an in-memory non-linear representation with
 -- single-plane images, and that a single-plane image /can/ share an
 -- in-memory non-linear representation with a plane of a multi-planar
 -- disjoint image, according to the rules in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes>.
 -- If the @pNext@ chain includes a
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory.ExternalMemoryImageCreateInfo'
 -- or
diff --git a/src/Vulkan/Core10/Enums/ImageLayout.hs b/src/Vulkan/Core10/Enums/ImageLayout.hs
--- a/src/Vulkan/Core10/Enums/ImageLayout.hs
+++ b/src/Vulkan/Core10/Enums/ImageLayout.hs
@@ -9,12 +9,12 @@
                                                     , IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
                                                     , IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
                                                     , IMAGE_LAYOUT_PREINITIALIZED
-                                                    , IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
-                                                    , IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
                                                     , IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
                                                     , IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
                                                     , IMAGE_LAYOUT_SHARED_PRESENT_KHR
                                                     , IMAGE_LAYOUT_PRESENT_SRC_KHR
+                                                    , IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
+                                                    , IMAGE_LAYOUT_READ_ONLY_OPTIMAL
                                                     , IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
                                                     , IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
                                                     , IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
@@ -46,15 +46,15 @@
 -- indicates which image layout the image subresource(s) are considered to
 -- be in when the image will be accessed. For transfer commands, this is a
 -- parameter to the command (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies>).
 -- For use as a framebuffer attachment, this is a member in the
 -- substructures of the 'Vulkan.Core10.Pass.RenderPassCreateInfo' (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass Render Pass>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass Render Pass>).
 -- For use in a descriptor set, this is a member in the
 -- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo' structure (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates>).
 --
 -- = See Also
 --
@@ -65,18 +65,18 @@
 -- 'Vulkan.Core10.Pass.AttachmentReference',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentReference2',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_separate_depth_stencil_layouts.AttachmentReferenceStencilLayout',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BlitImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferToImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageToBufferInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferToImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorImageInfo',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.ImageMemoryBarrier2KHR',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ResolveImageInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2',
 -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.cmdBindInvocationMaskHUAWEI',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',
@@ -127,7 +127,7 @@
 pattern IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL         = ImageLayout 5
 -- | 'IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL' /must/ only be used as a source
 -- image of a transfer command (see the definition of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-transfer >).
 -- This layout is valid only for image subresources of images created with
 -- the
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
@@ -148,22 +148,15 @@
 -- by the host, and hence the data /can/ be written to memory immediately,
 -- without first executing a layout transition. Currently,
 -- 'IMAGE_LAYOUT_PREINITIALIZED' is only useful with
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>
 -- images because there is not a standard layout defined for
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL' images.
 pattern IMAGE_LAYOUT_PREINITIALIZED                   = ImageLayout 8
--- | 'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR' specifies a layout that /must/
--- only be used with attachment accesses in the graphics pipeline.
-pattern IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR           = ImageLayout 1000314001
--- | 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' specifies a layout allowing read
--- only access as an attachment, or in shaders as a sampled image, combined
--- image\/sampler, or input attachment.
-pattern IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR            = ImageLayout 1000314000
 -- | 'IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR' /must/ only
 -- be used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>.
 -- This layout is valid only for image subresources of images created with
 -- the
 -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
@@ -186,6 +179,13 @@
 -- transitioned away from this layout after calling
 -- 'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR'.
 pattern IMAGE_LAYOUT_PRESENT_SRC_KHR                  = ImageLayout 1000001002
+-- | 'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL' specifies a layout that /must/ only be
+-- used with attachment accesses in the graphics pipeline.
+pattern IMAGE_LAYOUT_ATTACHMENT_OPTIMAL               = ImageLayout 1000314001
+-- | 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL' specifies a layout allowing read only
+-- access as an attachment, or in shaders as a sampled image, combined
+-- image\/sampler, or input attachment.
+pattern IMAGE_LAYOUT_READ_ONLY_OPTIMAL                = ImageLayout 1000314000
 -- | 'IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL' specifies a layout for the
 -- stencil aspect of a depth\/stencil format image allowing read-only
 -- access as a stencil attachment or in shaders as a sampled image,
@@ -229,12 +229,12 @@
              IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
              IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
              IMAGE_LAYOUT_PREINITIALIZED,
-             IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR,
-             IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR,
              IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
              IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT,
              IMAGE_LAYOUT_SHARED_PRESENT_KHR,
              IMAGE_LAYOUT_PRESENT_SRC_KHR,
+             IMAGE_LAYOUT_ATTACHMENT_OPTIMAL,
+             IMAGE_LAYOUT_READ_ONLY_OPTIMAL,
              IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
              IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
              IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
@@ -259,12 +259,12 @@
   , (IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL            , "TRANSFER_SRC_OPTIMAL")
   , (IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL            , "TRANSFER_DST_OPTIMAL")
   , (IMAGE_LAYOUT_PREINITIALIZED                  , "PREINITIALIZED")
-  , (IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR          , "ATTACHMENT_OPTIMAL_KHR")
-  , (IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR           , "READ_ONLY_OPTIMAL_KHR")
   , (IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR")
   , (IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, "FRAGMENT_DENSITY_MAP_OPTIMAL_EXT")
   , (IMAGE_LAYOUT_SHARED_PRESENT_KHR              , "SHARED_PRESENT_KHR")
   , (IMAGE_LAYOUT_PRESENT_SRC_KHR                 , "PRESENT_SRC_KHR")
+  , (IMAGE_LAYOUT_ATTACHMENT_OPTIMAL              , "ATTACHMENT_OPTIMAL")
+  , (IMAGE_LAYOUT_READ_ONLY_OPTIMAL               , "READ_ONLY_OPTIMAL")
   , (IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL       , "STENCIL_READ_ONLY_OPTIMAL")
   , (IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL      , "STENCIL_ATTACHMENT_OPTIMAL")
   , (IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL         , "DEPTH_READ_ONLY_OPTIMAL")
diff --git a/src/Vulkan/Core10/Enums/ImageTiling.hs b/src/Vulkan/Core10/Enums/ImageTiling.hs
--- a/src/Vulkan/Core10/Enums/ImageTiling.hs
+++ b/src/Vulkan/Core10/Enums/ImageTiling.hs
@@ -38,7 +38,7 @@
 pattern IMAGE_TILING_LINEAR                  = ImageTiling 1
 -- | 'IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT' indicates that the image’s tiling
 -- is defined by a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.
 -- The modifier is specified at image creation with
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT'
 -- or
diff --git a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/ImageUsageFlagBits.hs
@@ -67,7 +67,7 @@
 pattern IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT             = ImageUsageFlagBits 0x00000020
 -- | 'IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT' specifies that implementations
 -- /may/ support using
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory memory allocations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory memory allocations>
 -- with the
 -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT'
 -- to back an image with this usage. This bit /can/ be set for any image
@@ -87,14 +87,14 @@
 -- | 'IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies that
 -- the image /can/ be used to create a 'Vulkan.Core10.Handles.ImageView'
 -- suitable for use as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
 pattern IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = ImageUsageFlagBits 0x00000100
 -- | 'IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that the image
 -- /can/ be used to create a 'Vulkan.Core10.Handles.ImageView' suitable for
 -- use as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map image>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops fragment density map image>.
 pattern IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT             = ImageUsageFlagBits 0x00000200
 
 conNameImageUsageFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/LogicOp.hs b/src/Vulkan/Core10/Enums/LogicOp.hs
--- a/src/Vulkan/Core10/Enums/LogicOp.hs
+++ b/src/Vulkan/Core10/Enums/LogicOp.hs
@@ -89,7 +89,7 @@
 --
 -- The result of the logical operation is then written to the color
 -- attachment as controlled by the component write mask, described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendoperations Blend Operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendoperations Blend Operations>.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs b/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs
--- a/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/MemoryPropertyFlagBits.hs
@@ -86,7 +86,7 @@
 -- 'MEMORY_PROPERTY_HOST_VISIBLE_BIT' set. Additionally, the object’s
 -- backing memory /may/ be provided by the implementation lazily as
 -- specified in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-lazy_allocation Lazily Allocated Memory>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-lazy_allocation Lazily Allocated Memory>.
 pattern MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT    = MemoryPropertyFlagBits 0x00000010
 -- | 'MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV' bit specifies that external
 -- devices can access this memory directly.
diff --git a/src/Vulkan/Core10/Enums/ObjectType.hs b/src/Vulkan/Core10/Enums/ObjectType.hs
--- a/src/Vulkan/Core10/Enums/ObjectType.hs
+++ b/src/Vulkan/Core10/Enums/ObjectType.hs
@@ -27,7 +27,6 @@
                                                   , OBJECT_TYPE_FRAMEBUFFER
                                                   , OBJECT_TYPE_COMMAND_POOL
                                                   , OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA
-                                                  , OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT
                                                   , OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV
                                                   , OBJECT_TYPE_DEFERRED_OPERATION_KHR
                                                   , OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL
@@ -42,6 +41,7 @@
                                                   , OBJECT_TYPE_DISPLAY_KHR
                                                   , OBJECT_TYPE_SWAPCHAIN_KHR
                                                   , OBJECT_TYPE_SURFACE_KHR
+                                                  , OBJECT_TYPE_PRIVATE_DATA_SLOT
                                                   , OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE
                                                   , OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION
                                                   , ..
@@ -145,7 +145,7 @@
 -- +-----------------------------------------------+-----------------------------------------------------------+
 -- | 'OBJECT_TYPE_DEFERRED_OPERATION_KHR'          | 'Vulkan.Extensions.Handles.DeferredOperationKHR'          |
 -- +-----------------------------------------------+-----------------------------------------------------------+
--- | 'OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT'           | 'Vulkan.Extensions.Handles.PrivateDataSlotEXT'            |
+-- | 'OBJECT_TYPE_PRIVATE_DATA_SLOT'               | 'Vulkan.Core13.Handles.PrivateDataSlot'                   |
 -- +-----------------------------------------------+-----------------------------------------------------------+
 --
 -- 'ObjectType' and Vulkan Handle Relationship
@@ -156,7 +156,9 @@
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectNameInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_debug_utils.DebugUtilsObjectTagInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceMemoryReportCallbackDataEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.getPrivateData',
 -- 'Vulkan.Extensions.VK_EXT_private_data.getPrivateDataEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.setPrivateData',
 -- 'Vulkan.Extensions.VK_EXT_private_data.setPrivateDataEXT'
 newtype ObjectType = ObjectType Int32
   deriving newtype (Eq, Ord, Storable, Zero)
@@ -215,8 +217,6 @@
 pattern OBJECT_TYPE_COMMAND_POOL                    = ObjectType 25
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA"
 pattern OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA       = ObjectType 1000366000
--- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"
-pattern OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT           = ObjectType 1000295000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"
 pattern OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV     = ObjectType 1000277000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"
@@ -245,6 +245,8 @@
 pattern OBJECT_TYPE_SWAPCHAIN_KHR                   = ObjectType 1000001000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SURFACE_KHR"
 pattern OBJECT_TYPE_SURFACE_KHR                     = ObjectType 1000000000
+-- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT"
+pattern OBJECT_TYPE_PRIVATE_DATA_SLOT               = ObjectType 1000295000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"
 pattern OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE      = ObjectType 1000085000
 -- No documentation found for Nested "VkObjectType" "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"
@@ -276,7 +278,6 @@
              OBJECT_TYPE_FRAMEBUFFER,
              OBJECT_TYPE_COMMAND_POOL,
              OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA,
-             OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT,
              OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV,
              OBJECT_TYPE_DEFERRED_OPERATION_KHR,
              OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL,
@@ -291,6 +292,7 @@
              OBJECT_TYPE_DISPLAY_KHR,
              OBJECT_TYPE_SWAPCHAIN_KHR,
              OBJECT_TYPE_SURFACE_KHR,
+             OBJECT_TYPE_PRIVATE_DATA_SLOT,
              OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
              OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION :: ObjectType #-}
 
@@ -329,7 +331,6 @@
   , (OBJECT_TYPE_FRAMEBUFFER                    , "FRAMEBUFFER")
   , (OBJECT_TYPE_COMMAND_POOL                   , "COMMAND_POOL")
   , (OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA      , "BUFFER_COLLECTION_FUCHSIA")
-  , (OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT          , "PRIVATE_DATA_SLOT_EXT")
   , (OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV    , "INDIRECT_COMMANDS_LAYOUT_NV")
   , (OBJECT_TYPE_DEFERRED_OPERATION_KHR         , "DEFERRED_OPERATION_KHR")
   , (OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, "PERFORMANCE_CONFIGURATION_INTEL")
@@ -344,6 +345,7 @@
   , (OBJECT_TYPE_DISPLAY_KHR                    , "DISPLAY_KHR")
   , (OBJECT_TYPE_SWAPCHAIN_KHR                  , "SWAPCHAIN_KHR")
   , (OBJECT_TYPE_SURFACE_KHR                    , "SURFACE_KHR")
+  , (OBJECT_TYPE_PRIVATE_DATA_SLOT              , "PRIVATE_DATA_SLOT")
   , (OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE     , "DESCRIPTOR_UPDATE_TEMPLATE")
   , (OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION       , "SAMPLER_YCBCR_CONVERSION")
   ]
diff --git a/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineCacheCreateFlagBits.hs
@@ -1,7 +1,7 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "PipelineCacheCreateFlagBits"
 module Vulkan.Core10.Enums.PipelineCacheCreateFlagBits  ( PipelineCacheCreateFlags
-                                                        , PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT
+                                                        , PipelineCacheCreateFlagBits( PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
                                                                                      , ..
                                                                                      )
                                                         ) where
@@ -29,23 +29,23 @@
 newtype PipelineCacheCreateFlagBits = PipelineCacheCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT' specifies that
--- all commands that modify the created
--- 'Vulkan.Core10.Handles.PipelineCache' will be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
+-- | 'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT' specifies that all
+-- commands that modify the created 'Vulkan.Core10.Handles.PipelineCache'
+-- will be
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
 -- When set, the implementation /may/ skip any unnecessary processing
 -- needed to support simultaneous modification from multiple threads where
 -- allowed.
-pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = PipelineCacheCreateFlagBits 0x00000001
+pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = PipelineCacheCreateFlagBits 0x00000001
 
 conNamePipelineCacheCreateFlagBits :: String
 conNamePipelineCacheCreateFlagBits = "PipelineCacheCreateFlagBits"
 
 enumPrefixPipelineCacheCreateFlagBits :: String
-enumPrefixPipelineCacheCreateFlagBits = "PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"
+enumPrefixPipelineCacheCreateFlagBits = "PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT"
 
 showTablePipelineCacheCreateFlagBits :: [(PipelineCacheCreateFlagBits, String)]
-showTablePipelineCacheCreateFlagBits = [(PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT, "")]
+showTablePipelineCacheCreateFlagBits = [(PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, "")]
 
 instance Show PipelineCacheCreateFlagBits where
   showsPrec = enumShowsPrec enumPrefixPipelineCacheCreateFlagBits
diff --git a/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineColorBlendStateCreateFlagBits.hs
@@ -33,7 +33,7 @@
 -- indicates that access to color and input attachments will have implicit
 -- framebuffer-local memory dependencies, allowing applications to express
 -- custom blending operations in a fragment shader. See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
 -- for more information.
 pattern PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM =
   PipelineColorBlendStateCreateFlagBits 0x00000001
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
@@ -5,8 +5,6 @@
                                                                            , PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
                                                                            , PIPELINE_CREATE_DERIVATIVE_BIT
                                                                            , PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
-                                                                           , PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT
-                                                                           , PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT
                                                                            , PIPELINE_CREATE_LIBRARY_BIT_KHR
                                                                            , PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
                                                                            , PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
@@ -21,6 +19,8 @@
                                                                            , PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
                                                                            , PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
                                                                            , PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+                                                                           , PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
+                                                                           , PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
                                                                            , PIPELINE_CREATE_DISPATCH_BASE_BIT
                                                                            , PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT
                                                                            , ..
@@ -134,21 +134,20 @@
 --
 -- -   'PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV' specifies that the
 --     pipeline can be used in combination with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commands>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands>.
 --
--- -   'PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
---     specifies that pipeline creation will fail if a compile is required
---     for creation of a valid 'Vulkan.Core10.Handles.Pipeline' object;
---     'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT' will be
+-- -   'PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT' specifies
+--     that pipeline creation will fail if a compile is required for
+--     creation of a valid 'Vulkan.Core10.Handles.Pipeline' object;
+--     'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED' will be
 --     returned by pipeline creation, and the
 --     'Vulkan.Core10.Handles.Pipeline' will be set to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'.
 --
 -- -   When creating multiple pipelines,
---     'PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT' specifies that
---     control will be returned to the application on failure of the
---     corresponding pipeline rather than continuing to create additional
---     pipelines.
+--     'PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT' specifies that control
+--     will be returned to the application on failure of the corresponding
+--     pipeline rather than continuing to create additional pipelines.
 --
 -- -   'PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV' specifies that the
 --     pipeline is allowed to use @OpTraceRayMotionNV@.
@@ -164,7 +163,7 @@
 -- It is valid to set both 'PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT' and
 -- 'PIPELINE_CREATE_DERIVATIVE_BIT'. This allows a pipeline to be both a
 -- parent and possibly a child in a pipeline hierarchy. See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>
 -- for more information.
 --
 -- = See Also
@@ -182,10 +181,6 @@
 pattern PIPELINE_CREATE_DERIVATIVE_BIT                              = PipelineCreateFlagBits 0x00000004
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV"
 pattern PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV             = PipelineCreateFlagBits 0x00100000
--- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"
-pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT             = PipelineCreateFlagBits 0x00000200
--- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"
-pattern PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT   = PipelineCreateFlagBits 0x00000100
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_LIBRARY_BIT_KHR"
 pattern PIPELINE_CREATE_LIBRARY_BIT_KHR                             = PipelineCreateFlagBits 0x00000800
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV"
@@ -214,6 +209,10 @@
 pattern PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PipelineCreateFlagBits 0x00400000
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
 pattern PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineCreateFlagBits 0x00200000
+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT"
+pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT                 = PipelineCreateFlagBits 0x00000200
+-- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT"
+pattern PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT       = PipelineCreateFlagBits 0x00000100
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_DISPATCH_BASE_BIT"
 pattern PIPELINE_CREATE_DISPATCH_BASE_BIT                           = PipelineCreateFlagBits 0x00000010
 -- No documentation found for Nested "VkPipelineCreateFlagBits" "VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT"
@@ -227,17 +226,15 @@
 
 showTablePipelineCreateFlagBits :: [(PipelineCreateFlagBits, String)]
 showTablePipelineCreateFlagBits =
-  [ (PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                 , "DISABLE_OPTIMIZATION_BIT")
-  , (PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                    , "ALLOW_DERIVATIVES_BIT")
-  , (PIPELINE_CREATE_DERIVATIVE_BIT                           , "DERIVATIVE_BIT")
-  , (PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV          , "RAY_TRACING_ALLOW_MOTION_BIT_NV")
-  , (PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT          , "EARLY_RETURN_ON_FAILURE_BIT_EXT")
-  , (PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, "FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT")
-  , (PIPELINE_CREATE_LIBRARY_BIT_KHR                          , "LIBRARY_BIT_KHR")
-  , (PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                 , "INDIRECT_BINDABLE_BIT_NV")
-  , (PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR , "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR")
-  , (PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR               , "CAPTURE_STATISTICS_BIT_KHR")
-  , (PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                     , "DEFER_COMPILE_BIT_NV")
+  [ (PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT                , "DISABLE_OPTIMIZATION_BIT")
+  , (PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                   , "ALLOW_DERIVATIVES_BIT")
+  , (PIPELINE_CREATE_DERIVATIVE_BIT                          , "DERIVATIVE_BIT")
+  , (PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV         , "RAY_TRACING_ALLOW_MOTION_BIT_NV")
+  , (PIPELINE_CREATE_LIBRARY_BIT_KHR                         , "LIBRARY_BIT_KHR")
+  , (PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV                , "INDIRECT_BINDABLE_BIT_NV")
+  , (PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR, "CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR")
+  , (PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR              , "CAPTURE_STATISTICS_BIT_KHR")
+  , (PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                    , "DEFER_COMPILE_BIT_NV")
   , ( PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
     , "RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR"
     )
@@ -255,8 +252,10 @@
   , ( PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
     , "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
     )
-  , (PIPELINE_CREATE_DISPATCH_BASE_BIT               , "DISPATCH_BASE_BIT")
-  , (PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, "VIEW_INDEX_FROM_DEVICE_INDEX_BIT")
+  , (PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT          , "EARLY_RETURN_ON_FAILURE_BIT")
+  , (PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT, "FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT")
+  , (PIPELINE_CREATE_DISPATCH_BASE_BIT                    , "DISPATCH_BASE_BIT")
+  , (PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT     , "VIEW_INDEX_FROM_DEVICE_INDEX_BIT")
   ]
 
 instance Show PipelineCreateFlagBits where
diff --git a/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineDepthStencilStateCreateFlagBits.hs
@@ -34,7 +34,7 @@
 -- indicates that access to the stencil aspects of depth\/stencil and input
 -- attachments will have implicit framebuffer-local memory dependencies.
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
 -- for more information.
 pattern PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM =
   PipelineDepthStencilStateCreateFlagBits 0x00000002
@@ -42,7 +42,7 @@
 -- indicates that access to the depth aspects of depth\/stencil and input
 -- attachments will have implicit framebuffer-local memory dependencies.
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
 -- for more information.
 pattern PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM =
   PipelineDepthStencilStateCreateFlagBits 0x00000001
diff --git a/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineShaderStageCreateFlagBits.hs
@@ -1,8 +1,8 @@
 {-# language CPP #-}
 -- No documentation found for Chapter "PipelineShaderStageCreateFlagBits"
 module Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits  ( PipelineShaderStageCreateFlags
-                                                              , PipelineShaderStageCreateFlagBits( PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
-                                                                                                 , PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
+                                                              , PipelineShaderStageCreateFlagBits( PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
+                                                                                                 , PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
                                                                                                  , ..
                                                                                                  )
                                                               ) where
@@ -27,17 +27,19 @@
 --
 -- Note
 --
--- If 'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
--- and 'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' are
--- specified and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
+-- If
+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
+-- and
+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
+-- are specified and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
 -- does not equal
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
 -- and no
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-required-subgroup-size required subgroup size>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-required-subgroup-size required subgroup size>
 -- is specified, then the only way to guarantee that the \'X\' dimension of
 -- the local workgroup size is a multiple of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
 -- is to make it a multiple of @maxSubgroupSize@. Under these conditions,
 -- you are guaranteed full subgroups but not any particular subgroup size.
 --
@@ -48,15 +50,15 @@
 newtype PipelineShaderStageCreateFlagBits = PipelineShaderStageCreateFlagBits Flags
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
--- | 'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT' specifies
--- that the subgroup sizes /must/ be launched with all invocations active
--- in the compute stage.
-pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT      = PipelineShaderStageCreateFlagBits 0x00000002
--- | 'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
--- specifies that the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
+-- | 'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT' specifies that
+-- the subgroup sizes /must/ be launched with all invocations active in the
+-- compute stage.
+pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT      = PipelineShaderStageCreateFlagBits 0x00000002
+-- | 'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT' specifies
+-- that the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
 -- /may/ vary in the shader stage.
-pattern PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = PipelineShaderStageCreateFlagBits 0x00000001
+pattern PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = PipelineShaderStageCreateFlagBits 0x00000001
 
 conNamePipelineShaderStageCreateFlagBits :: String
 conNamePipelineShaderStageCreateFlagBits = "PipelineShaderStageCreateFlagBits"
@@ -66,8 +68,8 @@
 
 showTablePipelineShaderStageCreateFlagBits :: [(PipelineShaderStageCreateFlagBits, String)]
 showTablePipelineShaderStageCreateFlagBits =
-  [ (PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT     , "REQUIRE_FULL_SUBGROUPS_BIT_EXT")
-  , (PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, "ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT")
+  [ (PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT     , "REQUIRE_FULL_SUBGROUPS_BIT")
+  , (PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT, "ALLOW_VARYING_SUBGROUP_SIZE_BIT")
   ]
 
 instance Show PipelineShaderStageCreateFlagBits where
diff --git a/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs b/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
--- a/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/PipelineStageFlagBits.hs
@@ -18,7 +18,6 @@
                                                                          , PIPELINE_STAGE_HOST_BIT
                                                                          , PIPELINE_STAGE_ALL_GRAPHICS_BIT
                                                                          , PIPELINE_STAGE_ALL_COMMANDS_BIT
-                                                                         , PIPELINE_STAGE_NONE_KHR
                                                                          , PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV
                                                                          , PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
                                                                          , PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
@@ -28,6 +27,7 @@
                                                                          , PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
                                                                          , PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
                                                                          , PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
+                                                                         , PIPELINE_STAGE_NONE
                                                                          , ..
                                                                          )
                                                   ) where
@@ -50,7 +50,7 @@
 -- = Description
 --
 -- These values all have the same meaning as the equivalently named values
--- for 'Vulkan.Extensions.VK_KHR_synchronization2.PipelineStageFlags2KHR'.
+-- for 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2'.
 --
 -- = See Also
 --
@@ -67,81 +67,81 @@
 -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when
 -- specified in the second synchronization scope, but specifies no stage of
 -- execution when specified in the first scope.
-pattern PIPELINE_STAGE_TOP_OF_PIPE_BIT                      = PipelineStageFlagBits 0x00000001
+pattern PIPELINE_STAGE_TOP_OF_PIPE_BIT                    = PipelineStageFlagBits 0x00000001
 -- | 'PIPELINE_STAGE_DRAW_INDIRECT_BIT' specifies the stage of the pipeline
 -- where @VkDrawIndirect*@ \/ @VkDispatchIndirect*@ \/
 -- @VkTraceRaysIndirect*@ data structures are consumed. This stage also
 -- includes reading commands written by
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV'.
-pattern PIPELINE_STAGE_DRAW_INDIRECT_BIT                    = PipelineStageFlagBits 0x00000002
+pattern PIPELINE_STAGE_DRAW_INDIRECT_BIT                  = PipelineStageFlagBits 0x00000002
 -- | 'PIPELINE_STAGE_VERTEX_INPUT_BIT' specifies the stage of the pipeline
 -- where vertex and index buffers are consumed.
-pattern PIPELINE_STAGE_VERTEX_INPUT_BIT                     = PipelineStageFlagBits 0x00000004
+pattern PIPELINE_STAGE_VERTEX_INPUT_BIT                   = PipelineStageFlagBits 0x00000004
 -- | 'PIPELINE_STAGE_VERTEX_SHADER_BIT' specifies the vertex shader stage.
-pattern PIPELINE_STAGE_VERTEX_SHADER_BIT                    = PipelineStageFlagBits 0x00000008
+pattern PIPELINE_STAGE_VERTEX_SHADER_BIT                  = PipelineStageFlagBits 0x00000008
 -- | 'PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT' specifies the
 -- tessellation control shader stage.
-pattern PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT      = PipelineStageFlagBits 0x00000010
+pattern PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT    = PipelineStageFlagBits 0x00000010
 -- | 'PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT' specifies the
 -- tessellation evaluation shader stage.
-pattern PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT   = PipelineStageFlagBits 0x00000020
+pattern PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = PipelineStageFlagBits 0x00000020
 -- | 'PIPELINE_STAGE_GEOMETRY_SHADER_BIT' specifies the geometry shader
 -- stage.
-pattern PIPELINE_STAGE_GEOMETRY_SHADER_BIT                  = PipelineStageFlagBits 0x00000040
+pattern PIPELINE_STAGE_GEOMETRY_SHADER_BIT                = PipelineStageFlagBits 0x00000040
 -- | 'PIPELINE_STAGE_FRAGMENT_SHADER_BIT' specifies the fragment shader
 -- stage.
-pattern PIPELINE_STAGE_FRAGMENT_SHADER_BIT                  = PipelineStageFlagBits 0x00000080
+pattern PIPELINE_STAGE_FRAGMENT_SHADER_BIT                = PipelineStageFlagBits 0x00000080
 -- | 'PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT' specifies the stage of the
 -- pipeline where early fragment tests (depth and stencil tests before
 -- fragment shading) are performed. This stage also includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>
 -- for framebuffer attachments with a depth\/stencil format.
-pattern PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT             = PipelineStageFlagBits 0x00000100
+pattern PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT           = PipelineStageFlagBits 0x00000100
 -- | 'PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT' specifies the stage of the
 -- pipeline where late fragment tests (depth and stencil tests after
 -- fragment shading) are performed. This stage also includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass store operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass store operations>
 -- for framebuffer attachments with a depth\/stencil format.
-pattern PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT              = PipelineStageFlagBits 0x00000200
+pattern PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT            = PipelineStageFlagBits 0x00000200
 -- | 'PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT' specifies the stage of the
 -- pipeline after blending where the final color values are output from the
 -- pipeline. This stage also includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>
 -- and multisample resolve operations for framebuffer attachments with a
 -- color or depth\/stencil format.
-pattern PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT          = PipelineStageFlagBits 0x00000400
+pattern PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT        = PipelineStageFlagBits 0x00000400
 -- | 'PIPELINE_STAGE_COMPUTE_SHADER_BIT' specifies the execution of a compute
 -- shader.
-pattern PIPELINE_STAGE_COMPUTE_SHADER_BIT                   = PipelineStageFlagBits 0x00000800
+pattern PIPELINE_STAGE_COMPUTE_SHADER_BIT                 = PipelineStageFlagBits 0x00000800
 -- | #synchronization-pipeline-stages-transfer# 'PIPELINE_STAGE_TRANSFER_BIT'
 -- specifies the following commands:
 --
 -- -   All
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>,
 --     including
 --     'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'
 --
--- -   'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'
+-- -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'
 --
--- -   'Vulkan.Extensions.VK_KHR_copy_commands2.cmdResolveImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'
+-- -   'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2'
+--     and 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'
 --
 -- -   All
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>,
 --     with the exception of
 --     'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'
-pattern PIPELINE_STAGE_TRANSFER_BIT                         = PipelineStageFlagBits 0x00001000
+pattern PIPELINE_STAGE_TRANSFER_BIT                       = PipelineStageFlagBits 0x00001000
 -- | 'PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT' is equivalent to
 -- 'PIPELINE_STAGE_ALL_COMMANDS_BIT' with
 -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlags' set to @0@ when
 -- specified in the first synchronization scope, but specifies no stage of
 -- execution when specified in the second scope.
-pattern PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                   = PipelineStageFlagBits 0x00002000
+pattern PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                 = PipelineStageFlagBits 0x00002000
 -- | 'PIPELINE_STAGE_HOST_BIT' specifies a pseudo-stage indicating execution
 -- on the host of reads\/writes of device memory. This stage is not invoked
 -- by any commands recorded in a command buffer.
-pattern PIPELINE_STAGE_HOST_BIT                             = PipelineStageFlagBits 0x00004000
+pattern PIPELINE_STAGE_HOST_BIT                           = PipelineStageFlagBits 0x00004000
 -- | 'PIPELINE_STAGE_ALL_GRAPHICS_BIT' specifies the execution of all
 -- graphics pipeline stages, and is equivalent to the logical OR of:
 --
@@ -176,39 +176,37 @@
 -- -   'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
-pattern PIPELINE_STAGE_ALL_GRAPHICS_BIT                     = PipelineStageFlagBits 0x00008000
+pattern PIPELINE_STAGE_ALL_GRAPHICS_BIT                   = PipelineStageFlagBits 0x00008000
 -- | 'PIPELINE_STAGE_ALL_COMMANDS_BIT' specifies all operations performed by
 -- all commands supported on the queue it is used with.
-pattern PIPELINE_STAGE_ALL_COMMANDS_BIT                     = PipelineStageFlagBits 0x00010000
--- | 'PIPELINE_STAGE_NONE_KHR' specifies no stages of execution.
-pattern PIPELINE_STAGE_NONE_KHR                             = PipelineStageFlagBits 0x00000000
+pattern PIPELINE_STAGE_ALL_COMMANDS_BIT                   = PipelineStageFlagBits 0x00010000
 -- | 'PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the
 -- pipeline where device-side preprocessing for generated commands via
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'
 -- is handled.
-pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV            = PipelineStageFlagBits 0x00020000
+pattern PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV          = PipelineStageFlagBits 0x00020000
 -- | 'PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies the
 -- stage of the pipeline where the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
 -- is read to determine the fragment shading rate for portions of a
 -- rasterized primitive.
 pattern PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits 0x00400000
 -- | 'PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage of
 -- the pipeline where the fragment density map is read to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
-pattern PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT     = PipelineStageFlagBits 0x00800000
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
+pattern PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT   = PipelineStageFlagBits 0x00800000
 -- | 'PIPELINE_STAGE_MESH_SHADER_BIT_NV' specifies the mesh shader stage.
-pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV                   = PipelineStageFlagBits 0x00100000
+pattern PIPELINE_STAGE_MESH_SHADER_BIT_NV                 = PipelineStageFlagBits 0x00100000
 -- | 'PIPELINE_STAGE_TASK_SHADER_BIT_NV' specifies the task shader stage.
-pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV                   = PipelineStageFlagBits 0x00080000
+pattern PIPELINE_STAGE_TASK_SHADER_BIT_NV                 = PipelineStageFlagBits 0x00080000
 -- | 'PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of
 -- the ray tracing shader stages, via
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV' ,
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysKHR', or
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR'
-pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR           = PipelineStageFlagBits 0x00200000
+pattern PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR         = PipelineStageFlagBits 0x00200000
 -- | 'PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
 -- execution of
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
@@ -225,11 +223,13 @@
 pattern PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = PipelineStageFlagBits 0x02000000
 -- | 'PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of
 -- the pipeline where the predicate of conditional rendering is consumed.
-pattern PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT        = PipelineStageFlagBits 0x00040000
+pattern PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT      = PipelineStageFlagBits 0x00040000
 -- | 'PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of the
 -- pipeline where vertex attribute output values are written to the
 -- transform feedback buffers.
-pattern PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT           = PipelineStageFlagBits 0x01000000
+pattern PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT         = PipelineStageFlagBits 0x01000000
+-- | 'PIPELINE_STAGE_NONE' specifies no stages of execution.
+pattern PIPELINE_STAGE_NONE                               = PipelineStageFlagBits 0x00000000
 
 conNamePipelineStageFlagBits :: String
 conNamePipelineStageFlagBits = "PipelineStageFlagBits"
@@ -239,33 +239,33 @@
 
 showTablePipelineStageFlagBits :: [(PipelineStageFlagBits, String)]
 showTablePipelineStageFlagBits =
-  [ (PIPELINE_STAGE_TOP_OF_PIPE_BIT                     , "TOP_OF_PIPE_BIT")
-  , (PIPELINE_STAGE_DRAW_INDIRECT_BIT                   , "DRAW_INDIRECT_BIT")
-  , (PIPELINE_STAGE_VERTEX_INPUT_BIT                    , "VERTEX_INPUT_BIT")
-  , (PIPELINE_STAGE_VERTEX_SHADER_BIT                   , "VERTEX_SHADER_BIT")
-  , (PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT     , "TESSELLATION_CONTROL_SHADER_BIT")
-  , (PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT  , "TESSELLATION_EVALUATION_SHADER_BIT")
-  , (PIPELINE_STAGE_GEOMETRY_SHADER_BIT                 , "GEOMETRY_SHADER_BIT")
-  , (PIPELINE_STAGE_FRAGMENT_SHADER_BIT                 , "FRAGMENT_SHADER_BIT")
-  , (PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT            , "EARLY_FRAGMENT_TESTS_BIT")
-  , (PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT             , "LATE_FRAGMENT_TESTS_BIT")
-  , (PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT         , "COLOR_ATTACHMENT_OUTPUT_BIT")
-  , (PIPELINE_STAGE_COMPUTE_SHADER_BIT                  , "COMPUTE_SHADER_BIT")
-  , (PIPELINE_STAGE_TRANSFER_BIT                        , "TRANSFER_BIT")
-  , (PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                  , "BOTTOM_OF_PIPE_BIT")
-  , (PIPELINE_STAGE_HOST_BIT                            , "HOST_BIT")
-  , (PIPELINE_STAGE_ALL_GRAPHICS_BIT                    , "ALL_GRAPHICS_BIT")
-  , (PIPELINE_STAGE_ALL_COMMANDS_BIT                    , "ALL_COMMANDS_BIT")
-  , (PIPELINE_STAGE_NONE_KHR                            , "NONE_KHR")
-  , (PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV           , "COMMAND_PREPROCESS_BIT_NV")
+  [ (PIPELINE_STAGE_TOP_OF_PIPE_BIT                   , "TOP_OF_PIPE_BIT")
+  , (PIPELINE_STAGE_DRAW_INDIRECT_BIT                 , "DRAW_INDIRECT_BIT")
+  , (PIPELINE_STAGE_VERTEX_INPUT_BIT                  , "VERTEX_INPUT_BIT")
+  , (PIPELINE_STAGE_VERTEX_SHADER_BIT                 , "VERTEX_SHADER_BIT")
+  , (PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT   , "TESSELLATION_CONTROL_SHADER_BIT")
+  , (PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT, "TESSELLATION_EVALUATION_SHADER_BIT")
+  , (PIPELINE_STAGE_GEOMETRY_SHADER_BIT               , "GEOMETRY_SHADER_BIT")
+  , (PIPELINE_STAGE_FRAGMENT_SHADER_BIT               , "FRAGMENT_SHADER_BIT")
+  , (PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT          , "EARLY_FRAGMENT_TESTS_BIT")
+  , (PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT           , "LATE_FRAGMENT_TESTS_BIT")
+  , (PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT       , "COLOR_ATTACHMENT_OUTPUT_BIT")
+  , (PIPELINE_STAGE_COMPUTE_SHADER_BIT                , "COMPUTE_SHADER_BIT")
+  , (PIPELINE_STAGE_TRANSFER_BIT                      , "TRANSFER_BIT")
+  , (PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                , "BOTTOM_OF_PIPE_BIT")
+  , (PIPELINE_STAGE_HOST_BIT                          , "HOST_BIT")
+  , (PIPELINE_STAGE_ALL_GRAPHICS_BIT                  , "ALL_GRAPHICS_BIT")
+  , (PIPELINE_STAGE_ALL_COMMANDS_BIT                  , "ALL_COMMANDS_BIT")
+  , (PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV         , "COMMAND_PREPROCESS_BIT_NV")
   , (PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")
-  , (PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT    , "FRAGMENT_DENSITY_PROCESS_BIT_EXT")
-  , (PIPELINE_STAGE_MESH_SHADER_BIT_NV                  , "MESH_SHADER_BIT_NV")
-  , (PIPELINE_STAGE_TASK_SHADER_BIT_NV                  , "TASK_SHADER_BIT_NV")
-  , (PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR          , "RAY_TRACING_SHADER_BIT_KHR")
+  , (PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT  , "FRAGMENT_DENSITY_PROCESS_BIT_EXT")
+  , (PIPELINE_STAGE_MESH_SHADER_BIT_NV                , "MESH_SHADER_BIT_NV")
+  , (PIPELINE_STAGE_TASK_SHADER_BIT_NV                , "TASK_SHADER_BIT_NV")
+  , (PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR        , "RAY_TRACING_SHADER_BIT_KHR")
   , (PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, "ACCELERATION_STRUCTURE_BUILD_BIT_KHR")
-  , (PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT       , "CONDITIONAL_RENDERING_BIT_EXT")
-  , (PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT          , "TRANSFORM_FEEDBACK_BIT_EXT")
+  , (PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT     , "CONDITIONAL_RENDERING_BIT_EXT")
+  , (PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT        , "TRANSFORM_FEEDBACK_BIT_EXT")
+  , (PIPELINE_STAGE_NONE                              , "NONE")
   ]
 
 instance Show PipelineStageFlagBits where
diff --git a/src/Vulkan/Core10/Enums/PrimitiveTopology.hs b/src/Vulkan/Core10/Enums/PrimitiveTopology.hs
--- a/src/Vulkan/Core10/Enums/PrimitiveTopology.hs
+++ b/src/Vulkan/Core10/Enums/PrimitiveTopology.hs
@@ -38,16 +38,16 @@
 -- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Number    |                                                                                                                                |
 -- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+
 -- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iMTUuNzE0ODQ5IgogICBoZWlnaHQ9IjEwLjkzODc2MiIKICAgdmlld0JveD0iMCAwIDE1LjcxNDg0OSAxMC45Mzg3NjIiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfcHJvdm9raW5nX3ZlcnRleC5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xMzguNzA4NDQiCiAgICAgaW5rc2NhcGU6Y3k9Ii01NS44NjU2MjgiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjI1OTUiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTQ5NSIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iNDgxIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIxOTEiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTkwLjUwOTEwNyIKICAgICAgIG9yaWdpbnk9Ii01OTUuNTA5MTciIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEwMy4wNDM1LDE4NC40ODI5MikiPgogICAgPGNpcmNsZQogICAgICAgc3R5bGU9ImZpbGw6I2ZmMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIgogICAgICAgaWQ9InBhdGg0NTE3LTAtOC01LTkxLTAtMy04IgogICAgICAgY3g9IjEwNy41MzQzOSIKICAgICAgIGN5PSItMTc4LjAzNTA1IgogICAgICAgcj0iMy40OTA4OTMxIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiNmYTAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAxNTc0NzU7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMTA3LjUzNDM5LC0xNzguMDM1IDEwLC01IgogICAgICAgaWQ9InBhdGg0NjcyIgogICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICA8L2c+Cjwvc3ZnPgo= primitive topology key provoking vertex>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          | Provoking | Provoking vertex within the main primitive. The tail is angled towards the relevant primitive. Used in                         |
--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Vertex    | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading>.       |
+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Vertex    | <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-flatshading flat shading>.       |
 -- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+
 -- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfZWRnZS5zdmciPgogIDxkZWZzCiAgICAgaWQ9ImRlZnM4NjQ3IiAvPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0iYmFzZSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp6b29tPSIyLjgyODQyNzEiCiAgICAgaW5rc2NhcGU6Y3g9Ii0xNTUuNzc5NSIKICAgICBpbmtzY2FwZTpjeT0iLTQuNTU4MjQ3MyIKICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIgogICAgIHNob3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMjI2MiIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxNTA3IgogICAgIGlua3NjYXBlOndpbmRvdy14PSI0ODIiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjM4NSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA5IgogICAgICAgb3JpZ2lueT0iLTY0OC41MDAwMyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZSAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzIxLjUzNDM5LDIyOS41MzUwMykiPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjE7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLWRhc2hvZmZzZXQ6MDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgZD0ibSAzMjIuNTM0MzksLTIyOC4wMzUwMyBoIDgwIgogICAgICAgaWQ9InBhdGgyMDMzLTEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogIDwvZz4KPC9zdmc+Cg== primitive topology key edge>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | Primitive | An edge connecting the points of a main primitive.                                                                             |
 -- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Edge      |                                                                                                                                |
 -- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+
 -- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iODIiCiAgIGhlaWdodD0iMyIKICAgdmlld0JveD0iMCAwIDgyLjAwMDAwMSAzLjAwMDAwMDEiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2Zzg2NTMiCiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTIuNCAoNWRhNjg5YzMxMywgMjAxOS0wMS0xNCkiCiAgIHNvZGlwb2RpOmRvY25hbWU9InByaW1pdGl2ZV90b3BvbG9neV9rZXlfYWRqYWNlbmN5X2VkZ2Uuc3ZnIj4KICA8ZGVmcwogICAgIGlkPSJkZWZzODY0NyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTYxLjc4OTkiCiAgICAgaW5rc2NhcGU6Y3k9Ii03MC43NzUwMjMiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIKICAgICBzaG93Z3JpZD0idHJ1ZSIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjIyMzMiCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTM0MyIKICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMzkyIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyOTYiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMCIKICAgICBmaXQtbWFyZ2luLXRvcD0iMSIKICAgICBmaXQtbWFyZ2luLWxlZnQ9IjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMSIKICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMSIKICAgICBpbmtzY2FwZTpzbmFwLWdyaWRzPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAgICBpbmtzY2FwZTpzbmFwLW9iamVjdC1taWRwb2ludHM9InRydWUiCiAgICAgdW5pdHM9InB4IgogICAgIGJvcmRlcmxheWVyPSJmYWxzZSI+CiAgICA8aW5rc2NhcGU6Z3JpZAogICAgICAgdHlwZT0ieHlncmlkIgogICAgICAgaWQ9ImdyaWQ5NjI2IgogICAgICAgb3JpZ2lueD0iLTMwOSIKICAgICAgIG9yaWdpbnk9Ii02MjMuNTAwMDMiIC8+CiAgPC9zb2RpcG9kaTpuYW1lZHZpZXc+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhODY1MCI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGUgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyMS41MzQzOSwyMDQuNTM1MDMpIj4KICAgIDxwYXRoCiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTo0LCA0O3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgIGQ9Im0gMzIyLjUzNDM5LC0yMDMuMDM1MDMgaCA4MCIKICAgICAgIGlkPSJwYXRoMjAzMyIKICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgPC9nPgo8L3N2Zz4K primitive topology key adjacency edge>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | Adjacency | Points connected by these lines do not contribute to a main primitive, and are only accessible in a                            |
--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Edge      | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shader>.                      |
+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Edge      | <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#geometry geometry shader>.                      |
 -- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+
 -- | <<data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB3aWR0aD0iNTUuMDYzODE2IgogICBoZWlnaHQ9IjQ2LjE3ODgyOSIKICAgdmlld0JveD0iMCAwIDU1LjA2MzgxNyA0Ni4xNzg4MyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnODY1MyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45Mi40ICg1ZGE2ODljMzEzLCAyMDE5LTAxLTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0icHJpbWl0aXZlX3RvcG9sb2d5X2tleV93aW5kaW5nX29yZGVyLnN2ZyI+CiAgPGRlZnMKICAgICBpZD0iZGVmczg2NDciPgogICAgPG1hcmtlcgogICAgICAgaW5rc2NhcGU6aXNzdG9jaz0idHJ1ZSIKICAgICAgIHN0eWxlPSJvdmVyZmxvdzp2aXNpYmxlIgogICAgICAgaWQ9Im1hcmtlcjMwMzktMSIKICAgICAgIHJlZlg9IjAiCiAgICAgICByZWZZPSIwIgogICAgICAgb3JpZW50PSJhdXRvIgogICAgICAgaW5rc2NhcGU6c3RvY2tpZD0iQXJyb3cxTWVuZCI+CiAgICAgIDxwYXRoCiAgICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KC0wLjQsMCwwLC0wLjQsLTQsMCkiCiAgICAgICAgIHN0eWxlPSJmaWxsOiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuMDAwMDAwMDNwdDtzdHJva2Utb3BhY2l0eToxIgogICAgICAgICBkPSJNIDAsMCA1LC01IC0xMi41LDAgNSw1IFoiCiAgICAgICAgIGlkPSJwYXRoMzAzNy0wIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgogICAgPC9tYXJrZXI+CiAgICA8bWFya2VyCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpZD0ibWFya2VyMjg5MS02IgogICAgICAgcmVmWD0iMCIKICAgICAgIHJlZlk9IjAiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICBpbmtzY2FwZTpzdG9ja2lkPSJBcnJvdzFNZW5kIj4KICAgICAgPHBhdGgKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS4wMDAwMDAwM3B0O3N0cm9rZS1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gMCwwIDUsLTUgLTEyLjUsMCA1LDUgWiIKICAgICAgICAgaWQ9InBhdGgyODg5LTYiCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CiAgICA8L21hcmtlcj4KICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MU1lbmQiCiAgICAgICBvcmllbnQ9ImF1dG8iCiAgICAgICByZWZZPSIwIgogICAgICAgcmVmWD0iMCIKICAgICAgIGlkPSJBcnJvdzFNZW5kLTgwIgogICAgICAgc3R5bGU9Im92ZXJmbG93OnZpc2libGUiCiAgICAgICBpbmtzY2FwZTppc3N0b2NrPSJ0cnVlIgogICAgICAgaW5rc2NhcGU6Y29sbGVjdD0iYWx3YXlzIj4KICAgICAgPHBhdGgKICAgICAgICAgaWQ9InBhdGg4OTAtMCIKICAgICAgICAgZD0iTSAwLDAgNSwtNSAtMTIuNSwwIDUsNSBaIgogICAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjAwMDAwMDAzcHQ7c3Ryb2tlLW9wYWNpdHk6MSIKICAgICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoLTAuNCwwLDAsLTAuNCwtNCwwKSIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KICAgIDwvbWFya2VyPgogIDwvZGVmcz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgaWQ9ImJhc2UiCiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEuMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6em9vbT0iMi44Mjg0MjcxIgogICAgIGlua3NjYXBlOmN4PSItMTQwLjU1MDU2IgogICAgIGlua3NjYXBlOmN5PSItOC40MzI2NjQ2IgogICAgIGlua3NjYXBlOmRvY3VtZW50LXVuaXRzPSJweCIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCiAgICAgc2hvd2dyaWQ9InRydWUiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMDEiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05IgogICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGZpdC1tYXJnaW4tdG9wPSIxIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMSIKICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIxIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIxIgogICAgIGlua3NjYXBlOnNuYXAtZ3JpZHM9InRydWUiCiAgICAgaW5rc2NhcGU6c25hcC10ZXh0LWJhc2VsaW5lPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtb2JqZWN0LW1pZHBvaW50cz0idHJ1ZSIKICAgICB1bml0cz0icHgiCiAgICAgYm9yZGVybGF5ZXI9ImZhbHNlIj4KICAgIDxpbmtzY2FwZTpncmlkCiAgICAgICB0eXBlPSJ4eWdyaWQiCiAgICAgICBpZD0iZ3JpZDk2MjYiCiAgICAgICBvcmlnaW54PSItMzA3LjAyOTMzIgogICAgICAgb3JpZ2lueT0iLTU2Ni40NjA5NyIgLz4KICA8L3NvZGlwb2RpOm5hbWVkdmlldz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE4NjUwIj4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZwogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIgogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9ImxheWVyMSIKICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzE5LjU2MzcxLDE5MC42NzQ4KSI+CiAgICA8ZwogICAgICAgaWQ9Imc0Mzg5LTg5IgogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjU1LC00NC45OTk5OTUpIj4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODY4LTc5IgogICAgICAgICBkPSJtIDY3LjUzNDM5MywtMTEzLjAzNTEgMjAsLTMwIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjbWFya2VyMzAzOS0xKSIgLz4KICAgICAgPHBhdGgKICAgICAgICAgc29kaXBvZGk6bm9kZXR5cGVzPSJjYyIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgxODcwLTMiCiAgICAgICAgIGQ9Im0gOTcuNTM0MzkzLC0xNDMuMDM1MSAxOS45OTk5OTcsMzAiCiAgICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxO21hcmtlci1lbmQ6dXJsKCNtYXJrZXIyODkxLTYpIiAvPgogICAgICA8cGF0aAogICAgICAgICBzb2RpcG9kaTpub2RldHlwZXM9ImNjIgogICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICBpZD0icGF0aDE4NzItOSIKICAgICAgICAgZD0iTSAxMTcuNTM0MzksLTEwMy4wMzUxIEggNjcuNTM0MzkzIgogICAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MTttYXJrZXItZW5kOnVybCgjQXJyb3cxTWVuZC04MCkiIC8+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K primitive topology key winding order>> | Winding   | The relative order in which vertices are defined within a primitive, used in the                                               |
--- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Order     | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygons-basic facing determination>. |
+-- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Order     | <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygons-basic facing determination>. |
 -- |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |           | This ordering has no specific start or end point.                                                                              |
 -- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------+
 --
@@ -60,29 +60,30 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 newtype PrimitiveTopology = PrimitiveTopology Int32
   deriving newtype (Eq, Ord, Storable, Zero)
 
 -- | 'PRIMITIVE_TOPOLOGY_POINT_LIST' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-point-lists separate point primitives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-point-lists separate point primitives>.
 pattern PRIMITIVE_TOPOLOGY_POINT_LIST                    = PrimitiveTopology 0
 -- | 'PRIMITIVE_TOPOLOGY_LINE_LIST' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists separate line primitives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-lists separate line primitives>.
 pattern PRIMITIVE_TOPOLOGY_LINE_LIST                     = PrimitiveTopology 1
 -- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips connected line primitives>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-strips connected line primitives>
 -- with consecutive lines sharing a vertex.
 pattern PRIMITIVE_TOPOLOGY_LINE_STRIP                    = PrimitiveTopology 2
 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists separate triangle primitives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-lists separate triangle primitives>.
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                 = PrimitiveTopology 3
 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips connected triangle primitives>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-strips connected triangle primitives>
 -- with consecutive triangles sharing an edge.
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP                = PrimitiveTopology 4
 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_FAN' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fans connected triangle primitives>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-fans connected triangle primitives>
 -- with all triangles sharing a common vertex. If the
 -- @VK_KHR_portability_subset@ extension is enabled, and
 -- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@triangleFans@
@@ -91,21 +92,21 @@
 -- /must/ not be used.
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                  = PrimitiveTopology 5
 -- | 'PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-lists-with-adjacency separate line primitives with adjacency>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-lists-with-adjacency separate line primitives with adjacency>.
 pattern PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY      = PrimitiveTopology 6
 -- | 'PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-line-strips-with-adjacency connected line primitives with adjacency>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-line-strips-with-adjacency connected line primitives with adjacency>,
 -- with consecutive primitives sharing three vertices.
 pattern PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY     = PrimitiveTopology 7
 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY' specifies a series of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-lists-with-adjacency separate triangle primitives with adjacency>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-lists-with-adjacency separate triangle primitives with adjacency>.
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY  = PrimitiveTopology 8
 -- | 'PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY' specifies
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-strips-with-adjacency connected triangle primitives with adjacency>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-strips-with-adjacency connected triangle primitives with adjacency>,
 -- with consecutive triangles sharing an edge.
 pattern PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = PrimitiveTopology 9
 -- | 'PRIMITIVE_TOPOLOGY_PATCH_LIST' specifies
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-patch-lists separate patch primitives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-patch-lists separate patch primitives>.
 pattern PRIMITIVE_TOPOLOGY_PATCH_LIST                    = PrimitiveTopology 10
 {-# complete PRIMITIVE_TOPOLOGY_POINT_LIST,
              PRIMITIVE_TOPOLOGY_LINE_LIST,
diff --git a/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs b/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueryControlFlagBits.hs
@@ -29,7 +29,7 @@
   deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
 
 -- | 'QUERY_CONTROL_PRECISE_BIT' specifies the precision of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion occlusion queries>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-occlusion occlusion queries>.
 pattern QUERY_CONTROL_PRECISE_BIT = QueryControlFlagBits 0x00000001
 
 conNameQueryControlFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs b/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueryPipelineStatisticFlagBits.hs
@@ -38,7 +38,7 @@
 -- implementation. Various device architectures will count these values
 -- differently. Any or all counters /may/ be affected by the issues
 -- described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-undefined Query Operation>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-undefined Query Operation>.
 --
 -- Note
 --
@@ -47,7 +47,7 @@
 --
 -- If a pipeline has @rasterizerDiscardEnable@ enabled, implementations
 -- /may/ discard primitives after the final
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
 -- As a result, if @rasterizerDiscardEnable@ is enabled, the clipping input
 -- and output primitives counters /may/ not be incremented.
 --
@@ -67,14 +67,14 @@
 -- | 'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT' specifies that
 -- queries managed by the pool will count the number of vertices processed
 -- by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing input assembly>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing input assembly>
 -- stage. Vertices corresponding to incomplete primitives /may/ contribute
 -- to the count.
 pattern QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT             = QueryPipelineStatisticFlagBits 0x00000001
 -- | 'QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT' specifies that
 -- queries managed by the pool will count the number of primitives
 -- processed by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing input assembly>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing input assembly>
 -- stage. If primitive restart is enabled, restarting the primitive
 -- topology has no effect on the count. Incomplete primitives /may/ be
 -- counted.
@@ -83,15 +83,15 @@
 -- queries managed by the pool will count the number of vertex shader
 -- invocations. This counter’s value is incremented each time a vertex
 -- shader is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-vertex-execution invoked>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-vertex-execution invoked>.
 pattern QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT           = QueryPipelineStatisticFlagBits 0x00000004
 -- | 'QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT' specifies
 -- that queries managed by the pool will count the number of geometry
 -- shader invocations. This counter’s value is incremented each time a
 -- geometry shader is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution invoked>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution invoked>.
 -- In the case of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-invocations instanced geometry shaders>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#geometry-invocations instanced geometry shaders>,
 -- the geometry shader invocations count is incremented for each separate
 -- instanced invocation.
 pattern QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT         = QueryPipelineStatisticFlagBits 0x00000008
@@ -106,14 +106,14 @@
 -- | 'QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT' specifies that
 -- queries managed by the pool will count the number of primitives
 -- processed by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>
 -- stage of the pipeline. The counter’s value is incremented each time a
 -- primitive reaches the primitive clipping stage.
 pattern QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT                = QueryPipelineStatisticFlagBits 0x00000020
 -- | 'QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT' specifies that
 -- queries managed by the pool will count the number of primitives output
 -- by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>
 -- stage of the pipeline. The counter’s value is incremented each time a
 -- primitive passes the primitive clipping stage. The actual number of
 -- primitives output by the primitive clipping stage for a particular input
@@ -129,20 +129,20 @@
 -- that queries managed by the pool will count the number of fragment
 -- shader invocations. The counter’s value is incremented each time the
 -- fragment shader is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader invoked>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader invoked>.
 pattern QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT         = QueryPipelineStatisticFlagBits 0x00000080
 -- | 'QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT'
 -- specifies that queries managed by the pool will count the number of
 -- patches processed by the tessellation control shader. The counter’s
 -- value is incremented once for each patch for which a tessellation
 -- control shader is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-control-execution invoked>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-tessellation-control-execution invoked>.
 pattern QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = QueryPipelineStatisticFlagBits 0x00000100
 -- | 'QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT'
 -- specifies that queries managed by the pool will count the number of
 -- invocations of the tessellation evaluation shader. The counter’s value
 -- is incremented each time the tessellation evaluation shader is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-tessellation-evaluation-execution invoked>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-tessellation-evaluation-execution invoked>.
 pattern QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT =
   QueryPipelineStatisticFlagBits 0x00000200
 -- | 'QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT' specifies that
diff --git a/src/Vulkan/Core10/Enums/QueryType.hs b/src/Vulkan/Core10/Enums/QueryType.hs
--- a/src/Vulkan/Core10/Enums/QueryType.hs
+++ b/src/Vulkan/Core10/Enums/QueryType.hs
@@ -34,37 +34,37 @@
   deriving newtype (Eq, Ord, Storable, Zero)
 
 -- | 'QUERY_TYPE_OCCLUSION' specifies an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-occlusion occlusion query>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-occlusion occlusion query>.
 pattern QUERY_TYPE_OCCLUSION                     = QueryType 0
 -- | 'QUERY_TYPE_PIPELINE_STATISTICS' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats pipeline statistics query>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-pipestats pipeline statistics query>.
 pattern QUERY_TYPE_PIPELINE_STATISTICS           = QueryType 1
 -- | 'QUERY_TYPE_TIMESTAMP' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-timestamps timestamp query>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-timestamps timestamp query>.
 pattern QUERY_TYPE_TIMESTAMP                     = QueryType 2
 -- | 'QUERY_TYPE_PERFORMANCE_QUERY_INTEL' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance-intel Intel performance query>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-performance-intel Intel performance query>.
 pattern QUERY_TYPE_PERFORMANCE_QUERY_INTEL       = QueryType 1000210000
 -- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure size query>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure size query>
 -- for use with
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV'.
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = QueryType 1000165000
 -- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying serialization acceleration structure size query>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying serialization acceleration structure size query>
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = QueryType 1000150001
 -- | 'QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure size query>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-copying acceleration structure size query>
 -- for use with
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR'
 -- or
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.writeAccelerationStructuresPropertiesKHR'.
 pattern QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = QueryType 1000150000
 -- | 'QUERY_TYPE_PERFORMANCE_QUERY_KHR' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-performance performance query>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-performance performance query>.
 pattern QUERY_TYPE_PERFORMANCE_QUERY_KHR         = QueryType 1000116000
 -- | 'QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT' specifies a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-transform-feedback transform feedback query>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-transform-feedback transform feedback query>.
 pattern QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = QueryType 1000028004
 {-# complete QUERY_TYPE_OCCLUSION,
              QUERY_TYPE_PIPELINE_STATISTICS,
diff --git a/src/Vulkan/Core10/Enums/QueueFlagBits.hs b/src/Vulkan/Core10/Enums/QueueFlagBits.hs
--- a/src/Vulkan/Core10/Enums/QueueFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/QueueFlagBits.hs
@@ -48,7 +48,7 @@
 -- /optional/.
 --
 -- For further details see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-queues Queues>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-queues Queues>.
 --
 -- = See Also
 --
@@ -68,7 +68,7 @@
 pattern QUEUE_TRANSFER_BIT       = QueueFlagBits 0x00000004
 -- | 'QUEUE_SPARSE_BINDING_BIT' specifies that queues in this queue family
 -- support sparse memory management operations (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sparsememory Sparse Resources>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sparsememory Sparse Resources>).
 -- If any of the sparse resource features are enabled, then at least one
 -- queue family /must/ support this bit.
 pattern QUEUE_SPARSE_BINDING_BIT = QueueFlagBits 0x00000008
@@ -76,7 +76,7 @@
 -- the
 -- 'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT'
 -- bit. (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-memory Protected Memory>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-protected-memory Protected Memory>).
 -- If the physical device supports the @protectedMemory@ feature, at least
 -- one of its queue families /must/ support this bit.
 pattern QUEUE_PROTECTED_BIT      = QueueFlagBits 0x00000010
diff --git a/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs b/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs
--- a/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/RenderPassCreateFlagBits.hs
@@ -31,7 +31,7 @@
 
 -- | 'RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM' specifies that the created
 -- render pass is compatible with
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
 pattern RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = RenderPassCreateFlagBits 0x00000002
 
 conNameRenderPassCreateFlagBits :: String
diff --git a/src/Vulkan/Core10/Enums/Result.hs b/src/Vulkan/Core10/Enums/Result.hs
--- a/src/Vulkan/Core10/Enums/Result.hs
+++ b/src/Vulkan/Core10/Enums/Result.hs
@@ -19,13 +19,12 @@
                                           , ERROR_FORMAT_NOT_SUPPORTED
                                           , ERROR_FRAGMENTED_POOL
                                           , ERROR_UNKNOWN
-                                          , PIPELINE_COMPILE_REQUIRED_EXT
                                           , OPERATION_NOT_DEFERRED_KHR
                                           , OPERATION_DEFERRED_KHR
                                           , THREAD_DONE_KHR
                                           , THREAD_IDLE_KHR
                                           , ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT
-                                          , ERROR_NOT_PERMITTED_EXT
+                                          , ERROR_NOT_PERMITTED_KHR
                                           , ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT
                                           , ERROR_INVALID_SHADER_NV
                                           , ERROR_VALIDATION_FAILED_EXT
@@ -34,6 +33,7 @@
                                           , SUBOPTIMAL_KHR
                                           , ERROR_NATIVE_WINDOW_IN_USE_KHR
                                           , ERROR_SURFACE_LOST_KHR
+                                          , PIPELINE_COMPILE_REQUIRED
                                           , ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS
                                           , ERROR_FRAGMENTATION
                                           , ERROR_INVALID_EXTERNAL_HANDLE
@@ -119,7 +119,7 @@
 -- completed for implementation-specific reasons.
 pattern ERROR_INITIALIZATION_FAILED          = Result (-3)
 -- | 'ERROR_DEVICE_LOST' The logical or physical device has been lost. See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>
 pattern ERROR_DEVICE_LOST                    = Result (-4)
 -- | 'ERROR_MEMORY_MAP_FAILED' Mapping of a memory object has failed.
 pattern ERROR_MEMORY_MAP_FAILED              = Result (-5)
@@ -150,10 +150,6 @@
 -- | 'ERROR_UNKNOWN' An unknown error has occurred; either the application
 -- has provided invalid input, or an implementation failure has occurred.
 pattern ERROR_UNKNOWN                        = Result (-13)
--- | 'PIPELINE_COMPILE_REQUIRED_EXT' A requested pipeline creation would have
--- required compilation, but the application requested compilation to not
--- be performed.
-pattern PIPELINE_COMPILE_REQUIRED_EXT        = Result 1000297000
 -- | 'OPERATION_NOT_DEFERRED_KHR' A deferred operation was requested and no
 -- operations were deferred.
 pattern OPERATION_NOT_DEFERRED_KHR           = Result 1000268003
@@ -173,8 +169,8 @@
 -- due to implementation-dependent reasons, outside of the application’s
 -- control.
 pattern ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = Result (-1000255000)
--- No documentation found for Nested "VkResult" "VK_ERROR_NOT_PERMITTED_EXT"
-pattern ERROR_NOT_PERMITTED_EXT              = Result (-1000174001)
+-- No documentation found for Nested "VkResult" "VK_ERROR_NOT_PERMITTED_KHR"
+pattern ERROR_NOT_PERMITTED_KHR              = Result (-1000174001)
 -- No documentation found for Nested "VkResult" "VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT"
 pattern ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = Result (-1000158000)
 -- | 'ERROR_INVALID_SHADER_NV' One or more shaders failed to compile or link.
@@ -202,6 +198,10 @@
 pattern ERROR_NATIVE_WINDOW_IN_USE_KHR       = Result (-1000000001)
 -- | 'ERROR_SURFACE_LOST_KHR' A surface is no longer available.
 pattern ERROR_SURFACE_LOST_KHR               = Result (-1000000000)
+-- | 'PIPELINE_COMPILE_REQUIRED' A requested pipeline creation would have
+-- required compilation, but the application requested compilation to not
+-- be performed.
+pattern PIPELINE_COMPILE_REQUIRED            = Result 1000297000
 -- | 'ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS' A buffer creation or memory
 -- allocation failed because the requested address is not available. A
 -- shader group handle assignment failed because the requested shader group
@@ -238,13 +238,12 @@
              ERROR_FORMAT_NOT_SUPPORTED,
              ERROR_FRAGMENTED_POOL,
              ERROR_UNKNOWN,
-             PIPELINE_COMPILE_REQUIRED_EXT,
              OPERATION_NOT_DEFERRED_KHR,
              OPERATION_DEFERRED_KHR,
              THREAD_DONE_KHR,
              THREAD_IDLE_KHR,
              ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT,
-             ERROR_NOT_PERMITTED_EXT,
+             ERROR_NOT_PERMITTED_KHR,
              ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT,
              ERROR_INVALID_SHADER_NV,
              ERROR_VALIDATION_FAILED_EXT,
@@ -253,6 +252,7 @@
              SUBOPTIMAL_KHR,
              ERROR_NATIVE_WINDOW_IN_USE_KHR,
              ERROR_SURFACE_LOST_KHR,
+             PIPELINE_COMPILE_REQUIRED,
              ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
              ERROR_FRAGMENTATION,
              ERROR_INVALID_EXTERNAL_HANDLE,
@@ -285,13 +285,12 @@
   , (ERROR_FORMAT_NOT_SUPPORTED          , "ERROR_FORMAT_NOT_SUPPORTED")
   , (ERROR_FRAGMENTED_POOL               , "ERROR_FRAGMENTED_POOL")
   , (ERROR_UNKNOWN                       , "ERROR_UNKNOWN")
-  , (PIPELINE_COMPILE_REQUIRED_EXT       , "PIPELINE_COMPILE_REQUIRED_EXT")
   , (OPERATION_NOT_DEFERRED_KHR          , "OPERATION_NOT_DEFERRED_KHR")
   , (OPERATION_DEFERRED_KHR              , "OPERATION_DEFERRED_KHR")
   , (THREAD_DONE_KHR                     , "THREAD_DONE_KHR")
   , (THREAD_IDLE_KHR                     , "THREAD_IDLE_KHR")
   , (ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT, "ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT")
-  , (ERROR_NOT_PERMITTED_EXT             , "ERROR_NOT_PERMITTED_EXT")
+  , (ERROR_NOT_PERMITTED_KHR             , "ERROR_NOT_PERMITTED_KHR")
   , (ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, "ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT")
   , (ERROR_INVALID_SHADER_NV             , "ERROR_INVALID_SHADER_NV")
   , (ERROR_VALIDATION_FAILED_EXT         , "ERROR_VALIDATION_FAILED_EXT")
@@ -300,6 +299,7 @@
   , (SUBOPTIMAL_KHR                      , "SUBOPTIMAL_KHR")
   , (ERROR_NATIVE_WINDOW_IN_USE_KHR      , "ERROR_NATIVE_WINDOW_IN_USE_KHR")
   , (ERROR_SURFACE_LOST_KHR              , "ERROR_SURFACE_LOST_KHR")
+  , (PIPELINE_COMPILE_REQUIRED           , "PIPELINE_COMPILE_REQUIRED")
   , (ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS")
   , (ERROR_FRAGMENTATION                 , "ERROR_FRAGMENTATION")
   , (ERROR_INVALID_EXTERNAL_HANDLE       , "ERROR_INVALID_EXTERNAL_HANDLE")
diff --git a/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs b/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SampleCountFlagBits.hs
@@ -34,7 +34,7 @@
 -- 'Vulkan.Core10.Pass.AttachmentDescription',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.AttachmentDescription2',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.FramebufferMixedSamplesCombinationNV',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
diff --git a/src/Vulkan/Core10/Enums/SamplerAddressMode.hs b/src/Vulkan/Core10/Enums/SamplerAddressMode.hs
--- a/src/Vulkan/Core10/Enums/SamplerAddressMode.hs
+++ b/src/Vulkan/Core10/Enums/SamplerAddressMode.hs
@@ -41,7 +41,7 @@
 pattern SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER      = SamplerAddressMode 3
 -- | 'SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE' specifies that the mirror
 -- clamp to edge wrap mode will be used. This is only valid if
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
 -- is enabled, or if the @VK_KHR_sampler_mirror_clamp_to_edge@ extension is
 -- enabled.
 pattern SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = SamplerAddressMode 4
diff --git a/src/Vulkan/Core10/Enums/SamplerMipmapMode.hs b/src/Vulkan/Core10/Enums/SamplerMipmapMode.hs
--- a/src/Vulkan/Core10/Enums/SamplerMipmapMode.hs
+++ b/src/Vulkan/Core10/Enums/SamplerMipmapMode.hs
@@ -19,7 +19,7 @@
 -- = Description
 --
 -- These modes are described in detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-filtering Texel Filtering>.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Core10/Enums/SharingMode.hs b/src/Vulkan/Core10/Enums/SharingMode.hs
--- a/src/Vulkan/Core10/Enums/SharingMode.hs
+++ b/src/Vulkan/Core10/Enums/SharingMode.hs
@@ -30,14 +30,14 @@
 -- acquired upon first use within a queue. Once a resource using
 -- 'SHARING_MODE_EXCLUSIVE' is owned by some queue family, the application
 -- /must/ perform a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
 -- to make the memory contents of a range or image subresource accessible
 -- to a different queue family.
 --
 -- Note
 --
 -- Images still require a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts layout transition>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-layouts layout transition>
 -- from 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
 -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED' before
 -- being used on the first queue.
diff --git a/src/Vulkan/Core10/Enums/StencilOp.hs b/src/Vulkan/Core10/Enums/StencilOp.hs
--- a/src/Vulkan/Core10/Enums/StencilOp.hs
+++ b/src/Vulkan/Core10/Enums/StencilOp.hs
@@ -31,6 +31,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Pipeline.StencilOpState',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilOpEXT'
 newtype StencilOp = StencilOp Int32
   deriving newtype (Eq, Ord, Storable, Zero)
diff --git a/src/Vulkan/Core10/Enums/StructureType.hs b/src/Vulkan/Core10/Enums/StructureType.hs
--- a/src/Vulkan/Core10/Enums/StructureType.hs
+++ b/src/Vulkan/Core10/Enums/StructureType.hs
@@ -53,10 +53,6 @@
                                                         , STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
-                                                        , STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR
-                                                        , STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT
                                                         , STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT
@@ -64,8 +60,6 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT
                                                         , STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT
-                                                        , STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT
                                                         , STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX
@@ -91,7 +85,6 @@
                                                         , STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
                                                         , STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
-                                                        , STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT
@@ -105,19 +98,7 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
-                                                        , STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR
-                                                        , STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR
-                                                        , STRUCTURE_TYPE_IMAGE_BLIT_2_KHR
-                                                        , STRUCTURE_TYPE_IMAGE_COPY_2_KHR
-                                                        , STRUCTURE_TYPE_BUFFER_COPY_2_KHR
-                                                        , STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR
-                                                        , STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR
-                                                        , STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR
-                                                        , STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR
-                                                        , STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR
-                                                        , STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT
                                                         , STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
@@ -128,24 +109,11 @@
                                                         , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
                                                         , STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
                                                         , STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR
-                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR
-                                                        , STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR
-                                                        , STRUCTURE_TYPE_SUBMIT_INFO_2_KHR
-                                                        , STRUCTURE_TYPE_DEPENDENCY_INFO_KHR
-                                                        , STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR
-                                                        , STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR
-                                                        , STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR
                                                         , STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT
-                                                        , STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT
-                                                        , STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR
                                                         , STRUCTURE_TYPE_PRESENT_ID_KHR
                                                         , STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
@@ -159,10 +127,7 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
                                                         , STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM
                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR
                                                         , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
@@ -173,7 +138,6 @@
                                                         , STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV
                                                         , STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
                                                         , STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
@@ -204,7 +168,6 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR
                                                         , STRUCTURE_TYPE_VALIDATION_FEATURES_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
@@ -220,14 +183,10 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR
                                                         , STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR
                                                         , STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT
-                                                        , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT
                                                         , STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR
                                                         , STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
                                                         , STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
                                                         , STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
@@ -248,12 +207,14 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
-                                                        , STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
                                                         , STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
+                                                        , STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR
+                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
                                                         , STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
                                                         , STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
@@ -261,7 +222,6 @@
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT
-                                                        , STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT
                                                         , STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
@@ -324,10 +284,6 @@
                                                         , STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT
                                                         , STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT
                                                         , STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
-                                                        , STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT
-                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT
                                                         , STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
                                                         , STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
                                                         , STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
@@ -400,7 +356,6 @@
                                                         , STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
                                                         , STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT
                                                         , STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT
                                                         , STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN
                                                         , STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
                                                         , STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
@@ -420,11 +375,6 @@
                                                         , STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
                                                         , STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT
                                                         , STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
-                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR
-                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR
-                                                        , STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR
-                                                        , STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR
-                                                        , STRUCTURE_TYPE_RENDERING_INFO_KHR
                                                         , STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
                                                         , STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
                                                         , STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
@@ -452,6 +402,58 @@
                                                         , STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
                                                         , STRUCTURE_TYPE_PRESENT_INFO_KHR
                                                         , STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
+                                                        , STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS
+                                                        , STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES
+                                                        , STRUCTURE_TYPE_FORMAT_PROPERTIES_3
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES
+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES
+                                                        , STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO
+                                                        , STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO
+                                                        , STRUCTURE_TYPE_RENDERING_INFO
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
+                                                        , STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO
+                                                        , STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES
+                                                        , STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES
+                                                        , STRUCTURE_TYPE_IMAGE_RESOLVE_2
+                                                        , STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2
+                                                        , STRUCTURE_TYPE_IMAGE_BLIT_2
+                                                        , STRUCTURE_TYPE_IMAGE_COPY_2
+                                                        , STRUCTURE_TYPE_BUFFER_COPY_2
+                                                        , STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2
+                                                        , STRUCTURE_TYPE_BLIT_IMAGE_INFO_2
+                                                        , STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2
+                                                        , STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2
+                                                        , STRUCTURE_TYPE_COPY_IMAGE_INFO_2
+                                                        , STRUCTURE_TYPE_COPY_BUFFER_INFO_2
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES
+                                                        , STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO
+                                                        , STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO
+                                                        , STRUCTURE_TYPE_SUBMIT_INFO_2
+                                                        , STRUCTURE_TYPE_DEPENDENCY_INFO
+                                                        , STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2
+                                                        , STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2
+                                                        , STRUCTURE_TYPE_MEMORY_BARRIER_2
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
+                                                        , STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO
+                                                        , STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES
+                                                        , STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES
+                                                        , STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES
                                                         , STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO
                                                         , STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO
                                                         , STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO
@@ -621,20 +623,20 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.BindImageMemorySwapchainInfoKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.BindImagePlaneMemoryInfo',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.BindSparseInfo',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BlitImageInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionBufferCreateInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionConstraintsInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionCreateInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionImageCreateInfoFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionPropertiesFUCHSIA',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferConstraintsInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferCopy2',
 -- 'Vulkan.Core10.Buffer.BufferCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_buffer_device_address.BufferDeviceAddressCreateInfoEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.BufferMemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferOpaqueCaptureAddressCreateInfo',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
@@ -646,21 +648,21 @@
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.CommandBufferInheritanceConditionalRenderingInfoEXT',
 -- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
 -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.CommandBufferInheritanceRenderPassTransformInfoQCOM',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo',
 -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.CommandBufferSubmitInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.CommandBufferSubmitInfo',
 -- 'Vulkan.Core10.CommandPool.CommandPoolCreateInfo',
 -- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_cooperative_matrix.CooperativeMatrixPropertiesNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyAccelerationStructureToMemoryInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferToImageInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferToImageInfo2',
 -- 'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM',
 -- 'Vulkan.Core10.DescriptorSet.CopyDescriptorSet',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageToBufferInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.CopyMemoryToAccelerationStructureInfoKHR',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.CuFunctionCreateInfoNVX',
 -- 'Vulkan.Extensions.VK_NVX_binary_import.CuLaunchInfoNVX',
@@ -678,9 +680,9 @@
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationBufferCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationImageCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.DependencyInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.DependencyInfo',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfoEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.DescriptorPoolInlineUniformBlockCreateInfo',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetLayoutBindingFlagsCreateInfo',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutCreateInfo',
@@ -688,7 +690,7 @@
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountAllocateInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_descriptor_indexing.DescriptorSetVariableDescriptorCountLayoutSupport',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateCreateInfo',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.DeviceBufferMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.DeviceBufferMemoryRequirements',
 -- 'Vulkan.Core10.Device.DeviceCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceDeviceMemoryReportCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.DeviceDiagnosticsConfigCreateInfoNV',
@@ -701,13 +703,13 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupSubmitInfo',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.DeviceGroupSwapchainCreateInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.DeviceImageMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.DeviceImageMemoryRequirements',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.DeviceMemoryOpaqueCaptureAddressInfo',
 -- 'Vulkan.Extensions.VK_AMD_memory_overallocation_behavior.DeviceMemoryOverallocationCreateInfoAMD',
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.DeviceMemoryReportCallbackDataEXT',
--- 'Vulkan.Extensions.VK_EXT_private_data.DevicePrivateDataCreateInfoEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.DevicePrivateDataCreateInfo',
 -- 'Vulkan.Core10.Device.DeviceQueueCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_global_priority.DeviceQueueGlobalPriorityCreateInfoEXT',
+-- 'Vulkan.Extensions.VK_KHR_global_priority.DeviceQueueGlobalPriorityCreateInfoKHR',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.DeviceQueueInfo2',
 -- 'Vulkan.Extensions.VK_EXT_directfb_surface.DirectFBSurfaceCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_display_control.DisplayEventInfoEXT',
@@ -745,7 +747,7 @@
 -- 'Vulkan.Extensions.VK_KHR_external_fence_win32.FenceGetWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_EXT_filter_cubic.FilterCubicImageViewImageFormatPropertiesEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2',
--- 'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatProperties3KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2.FormatProperties3',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateAttachmentInfoKHR',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentImageInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo',
@@ -762,9 +764,9 @@
 -- 'Vulkan.Extensions.VK_EXT_hdr_metadata.HdrMetadataEXT',
 -- 'Vulkan.Extensions.VK_EXT_headless_surface.HeadlessSurfaceCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_MVK_ios_surface.IOSSurfaceCreateInfoMVK',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageBlit2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
 -- 'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.ImageConstraintsInfoFUCHSIA',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierExplicitCreateInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierListCreateInfoEXT',
@@ -773,11 +775,11 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.ImageFormatProperties2',
 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.ImageMemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2',
 -- 'Vulkan.Extensions.VK_FUCHSIA_imagepipe_surface.ImagePipeSurfaceCreateInfoFUCHSIA',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.ImagePlaneMemoryRequirementsInfo',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageResolve2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageSparseMemoryRequirementsInfo2',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR',
@@ -808,7 +810,7 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.MemoryAllocateFlagsInfo',
 -- 'Vulkan.Core10.Memory.MemoryAllocateInfo',
 -- 'Vulkan.Core10.OtherTypes.MemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.MemoryBarrier2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedRequirements',
 -- 'Vulkan.Extensions.VK_KHR_external_memory_fd.MemoryFdPropertiesKHR',
@@ -869,7 +871,7 @@
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PhysicalDeviceDiscardRectanglePropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_driver_properties.PhysicalDeviceDriverProperties',
 -- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
@@ -894,27 +896,27 @@
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateKHR',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_global_priority_query.PhysicalDeviceGlobalPriorityQueryFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.PhysicalDeviceImageDrmFormatModifierInfoEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2',
--- 'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
 -- 'Vulkan.Extensions.VK_EXT_filter_cubic.PhysicalDeviceImageViewImageFormatInfoEXT',
 -- 'Vulkan.Extensions.VK_EXT_image_view_min_lod.PhysicalDeviceImageViewMinLodFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
 -- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties',
 -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.PhysicalDeviceInvocationMaskFeaturesHUAWEI',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',
 -- 'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4FeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4PropertiesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
 -- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceMemoryProperties2',
@@ -930,7 +932,7 @@
 -- 'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PhysicalDevicePointClippingProperties',
 -- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
@@ -938,7 +940,7 @@
 -- 'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
@@ -966,35 +968,35 @@
 -- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
 -- 'Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',
 -- 'Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',
--- 'Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
 -- 'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductPropertiesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeatures',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductProperties',
 -- 'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',
 -- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
 -- 'Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow.PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceSparseImageFormatInfo2',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingFeaturesHUAWEI',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingPropertiesHUAWEI',
 -- 'Vulkan.Extensions.VK_KHR_get_surface_capabilities2.PhysicalDeviceSurfaceInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.PhysicalDeviceSynchronization2FeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
 -- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',
--- 'Vulkan.Extensions.VK_EXT_tooling_info.PhysicalDeviceToolPropertiesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_tooling_info.PhysicalDeviceToolProperties',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout.PhysicalDeviceUniformBufferStandardLayoutFeatures',
@@ -1007,11 +1009,13 @@
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Features',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Properties',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
 -- 'Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout.PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats.PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
--- 'Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures',
 -- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
@@ -1020,7 +1024,7 @@
 -- 'Vulkan.Extensions.VK_NV_framebuffer_mixed_samples.PipelineCoverageModulationStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_NV_fragment_coverage_to_color.PipelineCoverageToColorStateCreateInfoNV',
--- 'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
 -- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',
 -- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo',
@@ -1042,11 +1046,11 @@
 -- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo',
 -- 'Vulkan.Extensions.VK_AMD_rasterization_order.PipelineRasterizationStateRasterizationOrderAMD',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
 -- 'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT',
 -- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo',
--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance2.PipelineTessellationDomainOriginStateCreateInfo',
 -- 'Vulkan.Core10.Pipeline.PipelineTessellationStateCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PipelineVertexInputDivisorStateCreateInfoEXT',
@@ -1063,14 +1067,14 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_incremental_present.PresentRegionsKHR',
 -- 'Vulkan.Extensions.VK_GOOGLE_display_timing.PresentTimesInfoGOOGLE',
--- 'Vulkan.Extensions.VK_EXT_private_data.PrivateDataSlotCreateInfoEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PrivateDataSlotCreateInfo',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.ProtectedSubmitInfo',
 -- 'Vulkan.Core10.Query.QueryPoolCreateInfo',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.QueryPoolPerformanceCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.QueryPoolPerformanceQueryCreateInfoINTEL',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.QueueFamilyCheckpointProperties2NV',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',
--- 'Vulkan.Extensions.VK_EXT_global_priority_query.QueueFamilyGlobalPriorityPropertiesEXT',
+-- 'Vulkan.Extensions.VK_KHR_global_priority.QueueFamilyGlobalPriorityPropertiesKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusProperties2KHR VkQueueFamilyQueryResultStatusProperties2KHR>,
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
@@ -1087,11 +1091,11 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.RenderPassSampleLocationsBeginInfoEXT',
 -- 'Vulkan.Extensions.VK_QCOM_render_pass_transform.RenderPassTransformBeginInfoQCOM',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ResolveImageInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo',
+-- '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.Core10.Sampler.SamplerCreateInfo',
@@ -1106,7 +1110,7 @@
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.SemaphoreGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.SemaphoreSubmitInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SemaphoreSubmitInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreTypeCreateInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo',
 -- 'Vulkan.Core10.Shader.ShaderModuleCreateInfo',
@@ -1116,7 +1120,7 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_GGP_stream_descriptor_surface.StreamDescriptorSurfaceCreateInfoGGP',
 -- 'Vulkan.Core10.Queue.SubmitInfo',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.SubmitInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassBeginInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDescription2',
@@ -1207,7 +1211,7 @@
 -- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.WriteDescriptorSetAccelerationStructureKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.WriteDescriptorSetAccelerationStructureNV',
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlockEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.WriteDescriptorSetInlineUniformBlock',
 -- 'Vulkan.Extensions.VK_KHR_xcb_surface.XcbSurfaceCreateInfoKHR',
 -- 'Vulkan.Extensions.VK_KHR_xlib_surface.XlibSurfaceCreateInfoKHR'
 newtype StructureType = StructureType Int32
@@ -1319,14 +1323,6 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = StructureType 1000425001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = StructureType 1000425000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR"
-pattern STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR      = StructureType 1000413003
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR"
-pattern STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR     = StructureType 1000413002
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = StructureType 1000413001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = StructureType 1000413000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = StructureType 1000412000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT"
@@ -1341,10 +1337,6 @@
 pattern STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT        = StructureType 1000391001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = StructureType 1000391000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = StructureType 1000388001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = StructureType 1000388000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT"
 pattern STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT      = StructureType 1000381001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT"
@@ -1395,8 +1387,6 @@
 pattern STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA   = StructureType 1000364001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA"
 pattern STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA  = StructureType 1000364000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR"
-pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR                   = StructureType 1000360000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = StructureType 1000356000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT"
@@ -1423,32 +1413,8 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = StructureType 1000342000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = StructureType 1000340000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR"
-pattern STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR                       = StructureType 1000337010
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR"
-pattern STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR                   = StructureType 1000337009
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR"
-pattern STRUCTURE_TYPE_IMAGE_BLIT_2_KHR                          = StructureType 1000337008
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR"
-pattern STRUCTURE_TYPE_IMAGE_COPY_2_KHR                          = StructureType 1000337007
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR"
-pattern STRUCTURE_TYPE_BUFFER_COPY_2_KHR                         = StructureType 1000337006
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR"
-pattern STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR                  = StructureType 1000337005
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR"
-pattern STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR                     = StructureType 1000337004
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR"
-pattern STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR           = StructureType 1000337003
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR"
-pattern STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR           = StructureType 1000337002
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR"
-pattern STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR                     = StructureType 1000337001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR"
-pattern STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR                    = StructureType 1000337000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = StructureType 1000336000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = StructureType 1000335000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM"
 pattern STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM          = StructureType 1000333000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"
@@ -1469,42 +1435,16 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = StructureType 1000326001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = StructureType 1000326000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = StructureType 1000325000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = StructureType 1000323000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV"
 pattern STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV                      = StructureType 1000314009
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV"
 pattern STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV   = StructureType 1000314008
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = StructureType 1000314007
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR"
-pattern STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR            = StructureType 1000314006
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR"
-pattern STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR                 = StructureType 1000314005
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR"
-pattern STRUCTURE_TYPE_SUBMIT_INFO_2_KHR                         = StructureType 1000314004
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR"
-pattern STRUCTURE_TYPE_DEPENDENCY_INFO_KHR                       = StructureType 1000314003
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR"
-pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR                = StructureType 1000314002
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR"
-pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR               = StructureType 1000314001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR"
-pattern STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR                      = StructureType 1000314000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV"
 pattern STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV  = StructureType 1000300001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = StructureType 1000300000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = StructureType 1000297000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT         = StructureType 1000295002
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT       = StructureType 1000295001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = StructureType 1000295000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR   = StructureType 1000294001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_ID_KHR"
@@ -1531,14 +1471,8 @@
 pattern STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM     = StructureType 1000282001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"
 pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = StructureType 1000282000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = StructureType 1000281001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = StructureType 1000281000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = StructureType 1000280001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = StructureType 1000280000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
 pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = StructureType 1000278001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV"
@@ -1559,8 +1493,6 @@
 pattern STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV      = StructureType 1000277001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = StructureType 1000277000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = StructureType 1000276000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = StructureType 1000273000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR"
@@ -1621,8 +1553,6 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = StructureType 1000248000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT"
 pattern STRUCTURE_TYPE_VALIDATION_FEATURES_EXT                   = StructureType 1000247000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT       = StructureType 1000245000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT"
 pattern STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT     = StructureType 1000244002
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"
@@ -1653,12 +1583,6 @@
 pattern STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = StructureType 1000226001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"
 pattern STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = StructureType 1000226000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = StructureType 1000225002
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = StructureType 1000225001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = StructureType 1000225000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"
 pattern STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = StructureType 1000218002
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT"
@@ -1667,8 +1591,6 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = StructureType 1000218000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT"
 pattern STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT             = StructureType 1000217000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = StructureType 1000215000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA"
 pattern STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA     = StructureType 1000214000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD"
@@ -1709,8 +1631,6 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV   = StructureType 1000202000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = StructureType 1000201000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = StructureType 1000192000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP"
 pattern STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP                   = StructureType 1000191000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"
@@ -1721,6 +1641,12 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = StructureType 1000190000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD"
 pattern STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = StructureType 1000189000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = StructureType 1000388001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = StructureType 1000388000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = StructureType 1000174000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD"
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = StructureType 1000185000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT"
@@ -1735,8 +1661,6 @@
 pattern STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT        = StructureType 1000178001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT"
 pattern STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT       = StructureType 1000178000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = StructureType 1000174000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"
 pattern STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = StructureType 1000170001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT"
@@ -1861,14 +1785,6 @@
 pattern STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = StructureType 1000143001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT"
 pattern STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT                 = StructureType 1000143000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"
-pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = StructureType 1000138003
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"
-pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = StructureType 1000138002
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = StructureType 1000138001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = StructureType 1000138000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"
 pattern STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = StructureType 1000129006
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID"
@@ -2013,8 +1929,6 @@
 pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT  = StructureType 1000067001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT"
 pattern STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT           = StructureType 1000067000
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = StructureType 1000066000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN"
 pattern STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN                 = StructureType 1000062000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT"
@@ -2053,16 +1967,6 @@
 pattern STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = StructureType 1000044007
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"
 pattern STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = StructureType 1000044006
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR"
-pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = StructureType 1000044004
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR"
-pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = StructureType 1000044003
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR"
-pattern STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR        = StructureType 1000044002
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR"
-pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR             = StructureType 1000044001
--- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_INFO_KHR"
-pattern STRUCTURE_TYPE_RENDERING_INFO_KHR                        = StructureType 1000044000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD"
 pattern STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD  = StructureType 1000041000
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX"
@@ -2117,6 +2021,110 @@
 pattern STRUCTURE_TYPE_PRESENT_INFO_KHR                          = StructureType 1000001001
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR"
 pattern STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = StructureType 1000001000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS"
+pattern STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS          = StructureType 1000413003
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS"
+pattern STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS         = StructureType 1000413002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES  = StructureType 1000413001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES    = StructureType 1000413000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3"
+pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_3                       = StructureType 1000360000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = StructureType 1000281001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = StructureType 1000280001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = StructureType 1000280000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = StructureType 1000044004
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = StructureType 1000044003
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO            = StructureType 1000044002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO"
+pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO                 = StructureType 1000044001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RENDERING_INFO"
+pattern STRUCTURE_TYPE_RENDERING_INFO                            = StructureType 1000044000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = StructureType 1000066000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO"
+pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = StructureType 1000138003
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK"
+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = StructureType 1000138002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = StructureType 1000138001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = StructureType 1000138000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = StructureType 1000225002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = StructureType 1000225001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = StructureType 1000225000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2"
+pattern STRUCTURE_TYPE_IMAGE_RESOLVE_2                           = StructureType 1000337010
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2"
+pattern STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2                       = StructureType 1000337009
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_BLIT_2"
+pattern STRUCTURE_TYPE_IMAGE_BLIT_2                              = StructureType 1000337008
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_COPY_2"
+pattern STRUCTURE_TYPE_IMAGE_COPY_2                              = StructureType 1000337007
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_COPY_2"
+pattern STRUCTURE_TYPE_BUFFER_COPY_2                             = StructureType 1000337006
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2"
+pattern STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2                      = StructureType 1000337005
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2"
+pattern STRUCTURE_TYPE_BLIT_IMAGE_INFO_2                         = StructureType 1000337004
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2"
+pattern STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2               = StructureType 1000337003
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2"
+pattern STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2               = StructureType 1000337002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2"
+pattern STRUCTURE_TYPE_COPY_IMAGE_INFO_2                         = StructureType 1000337001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2"
+pattern STRUCTURE_TYPE_COPY_BUFFER_INFO_2                        = StructureType 1000337000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = StructureType 1000335000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = StructureType 1000325000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = StructureType 1000314007
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO                = StructureType 1000314006
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO"
+pattern STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO                     = StructureType 1000314005
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_SUBMIT_INFO_2"
+pattern STRUCTURE_TYPE_SUBMIT_INFO_2                             = StructureType 1000314004
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEPENDENCY_INFO"
+pattern STRUCTURE_TYPE_DEPENDENCY_INFO                           = StructureType 1000314003
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2"
+pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2                    = StructureType 1000314002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2"
+pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2                   = StructureType 1000314001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2"
+pattern STRUCTURE_TYPE_MEMORY_BARRIER_2                          = StructureType 1000314000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = StructureType 1000297000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO"
+pattern STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO             = StructureType 1000295002
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO"
+pattern STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO           = StructureType 1000295001
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES     = StructureType 1000295000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = StructureType 1000276000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES           = StructureType 1000245000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = StructureType 1000215000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO"
+pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO    = StructureType 1000192000
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES     = StructureType 54
+-- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES       = StructureType 53
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO"
 pattern STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = StructureType 1000257004
 -- No documentation found for Nested "VkStructureType" "VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO"
@@ -2400,10 +2408,6 @@
              STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM,
-             STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR,
-             STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT,
              STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT,
@@ -2411,8 +2415,6 @@
              STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT,
              STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT,
-             STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT,
              STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT,
              STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX,
@@ -2438,7 +2440,6 @@
              STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA,
              STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA,
              STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA,
-             STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
              STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT,
@@ -2452,19 +2453,7 @@
              STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT,
-             STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR,
-             STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR,
-             STRUCTURE_TYPE_IMAGE_BLIT_2_KHR,
-             STRUCTURE_TYPE_IMAGE_COPY_2_KHR,
-             STRUCTURE_TYPE_BUFFER_COPY_2_KHR,
-             STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR,
-             STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR,
-             STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR,
-             STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR,
-             STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR,
-             STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT,
              STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT,
@@ -2475,24 +2464,11 @@
              STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR,
              STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV,
              STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR,
-             STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR,
-             STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR,
-             STRUCTURE_TYPE_SUBMIT_INFO_2_KHR,
-             STRUCTURE_TYPE_DEPENDENCY_INFO_KHR,
-             STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR,
-             STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR,
-             STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR,
              STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT,
-             STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT,
-             STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR,
              STRUCTURE_TYPE_PRESENT_ID_KHR,
              STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR,
@@ -2506,10 +2482,7 @@
              STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT,
              STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM,
              STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR,
              STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV,
@@ -2520,7 +2493,6 @@
              STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV,
              STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT,
              STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR,
              STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR,
@@ -2551,7 +2523,6 @@
              STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR,
              STRUCTURE_TYPE_VALIDATION_FEATURES_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT,
              STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV,
@@ -2567,14 +2538,10 @@
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR,
              STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR,
              STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT,
-             STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT,
              STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT,
              STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR,
              STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA,
              STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD,
              STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD,
@@ -2595,12 +2562,14 @@
              STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV,
-             STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT,
              STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT,
              STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD,
+             STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR,
+             STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD,
              STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT,
              STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD,
@@ -2608,7 +2577,6 @@
              STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT,
              STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,
              STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
-             STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
              STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT,
              STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV,
@@ -2671,10 +2639,6 @@
              STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
              STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
              STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
-             STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT,
-             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT,
              STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID,
              STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID,
              STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID,
@@ -2747,7 +2711,6 @@
              STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
              STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT,
              STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT,
              STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
              STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
              STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR,
@@ -2767,11 +2730,6 @@
              STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
              STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT,
              STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR,
-             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR,
-             STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR,
-             STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR,
-             STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR,
-             STRUCTURE_TYPE_RENDERING_INFO_KHR,
              STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
              STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX,
              STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX,
@@ -2799,6 +2757,58 @@
              STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
              STRUCTURE_TYPE_PRESENT_INFO_KHR,
              STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
+             STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS,
+             STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
+             STRUCTURE_TYPE_FORMAT_PROPERTIES_3,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
+             STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
+             STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,
+             STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
+             STRUCTURE_TYPE_RENDERING_INFO,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
+             STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
+             STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
+             STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
+             STRUCTURE_TYPE_IMAGE_RESOLVE_2,
+             STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2,
+             STRUCTURE_TYPE_IMAGE_BLIT_2,
+             STRUCTURE_TYPE_IMAGE_COPY_2,
+             STRUCTURE_TYPE_BUFFER_COPY_2,
+             STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2,
+             STRUCTURE_TYPE_BLIT_IMAGE_INFO_2,
+             STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2,
+             STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2,
+             STRUCTURE_TYPE_COPY_IMAGE_INFO_2,
+             STRUCTURE_TYPE_COPY_BUFFER_INFO_2,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
+             STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,
+             STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO,
+             STRUCTURE_TYPE_SUBMIT_INFO_2,
+             STRUCTURE_TYPE_DEPENDENCY_INFO,
+             STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2,
+             STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2,
+             STRUCTURE_TYPE_MEMORY_BARRIER_2,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
+             STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO,
+             STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
+             STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES,
+             STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES,
              STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
              STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
              STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
@@ -2984,10 +2994,6 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
     , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM"
     )
-  , (STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR        , "DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR")
-  , (STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR       , "DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR")
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR, "PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR")
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR  , "PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT
     , "PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT"
     )
@@ -3001,10 +3007,6 @@
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT        , "PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT")
   , (STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT             , "IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT")
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT, "PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT")
-  , (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT    , "QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT")
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT
-    , "PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT"
-    )
   , (STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT           , "PIPELINE_COLOR_WRITE_CREATE_INFO_EXT")
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT, "PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT")
   , (STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX                 , "SCREEN_SURFACE_CREATE_INFO_QNX")
@@ -3036,7 +3038,6 @@
   , (STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA          , "MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA")
   , (STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA        , "MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA")
   , (STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA       , "IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA")
-  , (STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR                        , "FORMAT_PROPERTIES_3_KHR")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT
     , "PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT"
     )
@@ -3060,22 +3061,10 @@
     , "PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM"
     )
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, "PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT")
-  , (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR                      , "IMAGE_RESOLVE_2_KHR")
-  , (STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR                  , "BUFFER_IMAGE_COPY_2_KHR")
-  , (STRUCTURE_TYPE_IMAGE_BLIT_2_KHR                         , "IMAGE_BLIT_2_KHR")
-  , (STRUCTURE_TYPE_IMAGE_COPY_2_KHR                         , "IMAGE_COPY_2_KHR")
-  , (STRUCTURE_TYPE_BUFFER_COPY_2_KHR                        , "BUFFER_COPY_2_KHR")
-  , (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR                 , "RESOLVE_IMAGE_INFO_2_KHR")
-  , (STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR                    , "BLIT_IMAGE_INFO_2_KHR")
-  , (STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR          , "COPY_IMAGE_TO_BUFFER_INFO_2_KHR")
-  , (STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR          , "COPY_BUFFER_TO_IMAGE_INFO_2_KHR")
-  , (STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR                    , "COPY_IMAGE_INFO_2_KHR")
-  , (STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR                   , "COPY_BUFFER_INFO_2_KHR")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
     , "PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR"
     )
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, "PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT")
-  , (STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM             , "COPY_COMMAND_TRANSFORM_INFO_QCOM")
+  , (STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM, "COPY_COMMAND_TRANSFORM_INFO_QCOM")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
     , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT"
     )
@@ -3101,33 +3090,16 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV
     , "PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV"
     )
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR
-    , "PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR"
-    )
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
     , "PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR"
     )
-  , (STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV                          , "CHECKPOINT_DATA_2_NV")
-  , (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV       , "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV")
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR, "PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR")
-  , (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR                , "COMMAND_BUFFER_SUBMIT_INFO_KHR")
-  , (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR                     , "SEMAPHORE_SUBMIT_INFO_KHR")
-  , (STRUCTURE_TYPE_SUBMIT_INFO_2_KHR                             , "SUBMIT_INFO_2_KHR")
-  , (STRUCTURE_TYPE_DEPENDENCY_INFO_KHR                           , "DEPENDENCY_INFO_KHR")
-  , (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR                    , "IMAGE_MEMORY_BARRIER_2_KHR")
-  , (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR                   , "BUFFER_MEMORY_BARRIER_2_KHR")
-  , (STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR                          , "MEMORY_BARRIER_2_KHR")
-  , (STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV      , "DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV")
+  , (STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV                    , "CHECKPOINT_DATA_2_NV")
+  , (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV , "QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV")
+  , (STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, "DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV")
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, "PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV")
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT
-    , "PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"
-    )
-  , (STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT        , "PRIVATE_DATA_SLOT_CREATE_INFO_EXT")
-  , (STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT      , "DEVICE_PRIVATE_DATA_CREATE_INFO_EXT")
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, "PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT")
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR  , "PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR")
-  , (STRUCTURE_TYPE_PRESENT_ID_KHR                           , "PRESENT_ID_KHR")
-  , (STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR         , "PIPELINE_LIBRARY_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR , "PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR")
+  , (STRUCTURE_TYPE_PRESENT_ID_KHR                          , "PRESENT_ID_KHR")
+  , (STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR        , "PIPELINE_LIBRARY_CREATE_INFO_KHR")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
     , "PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT"
     )
@@ -3146,18 +3118,9 @@
   , ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM
     , "COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM"
     )
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"
-    )
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
     , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT"
     )
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR
-    , "PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR"
-    )
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR"
-    )
   , ( STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
     , "COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV"
     )
@@ -3176,9 +3139,6 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV
     , "PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV"
     )
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"
-    )
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
     , "PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT"
     )
@@ -3231,7 +3191,6 @@
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, "PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV")
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR     , "PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR")
   , (STRUCTURE_TYPE_VALIDATION_FEATURES_EXT                       , "VALIDATION_FEATURES_EXT")
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT           , "PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT")
   , (STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT         , "BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
     , "PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT"
@@ -3259,15 +3218,6 @@
     , "PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR"
     )
   , (STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR")
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT
-    , "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"
-    )
-  , ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
-    , "PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"
-    )
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"
-    )
   , ( STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
     , "RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT"
     )
@@ -3277,10 +3227,7 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT
     , "PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT"
     )
-  , (STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT, "METAL_SURFACE_CREATE_INFO_EXT")
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR
-    , "PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"
-    )
+  , (STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT                 , "METAL_SURFACE_CREATE_INFO_EXT")
   , (STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA         , "IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA")
   , (STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD  , "SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD")
   , (STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD   , "DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD")
@@ -3311,8 +3258,7 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
     , "PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV"
     )
-  , (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, "PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT")
-  , (STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP                   , "PRESENT_FRAME_TOKEN_GGP")
+  , (STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP, "PRESENT_FRAME_TOKEN_GGP")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
     , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT"
     )
@@ -3323,6 +3269,11 @@
     , "PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT"
     )
   , (STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, "DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD")
+  , (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR , "QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR
+    , "PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR"
+    )
+  , (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR, "DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR")
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD  , "PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD")
   , (STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT               , "CALIBRATED_TIMESTAMP_INFO_EXT")
   , (STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD   , "PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD")
@@ -3330,9 +3281,8 @@
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
     , "PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT"
     )
-  , (STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT          , "MEMORY_HOST_POINTER_PROPERTIES_EXT")
-  , (STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT         , "IMPORT_MEMORY_HOST_POINTER_INFO_EXT")
-  , (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, "DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT")
+  , (STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT , "MEMORY_HOST_POINTER_PROPERTIES_EXT")
+  , (STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT, "IMPORT_MEMORY_HOST_POINTER_INFO_EXT")
   , ( STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
     , "FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT"
     )
@@ -3439,16 +3389,6 @@
   , (STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT, "PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT")
   , (STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT    , "RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT")
   , (STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT                      , "SAMPLE_LOCATIONS_INFO_EXT")
-  , ( STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT
-    , "DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"
-    )
-  , (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT, "WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT")
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT
-    , "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"
-    )
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT
-    , "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"
-    )
   , ( STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
     , "ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID"
     )
@@ -3545,22 +3485,19 @@
   , (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR           , "IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR")
   , (STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT      , "PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT")
   , (STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT               , "IMAGE_VIEW_ASTC_DECODE_MODE_EXT")
-  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT
-    , "PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"
-    )
-  , (STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN                , "VI_SURFACE_CREATE_INFO_NN")
-  , (STRUCTURE_TYPE_VALIDATION_FLAGS_EXT                     , "VALIDATION_FLAGS_EXT")
-  , (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR   , "DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR            , "DEVICE_GROUP_PRESENT_INFO_KHR")
-  , (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR              , "ACQUIRE_NEXT_IMAGE_INFO_KHR")
-  , (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR     , "BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR")
-  , (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR          , "IMAGE_SWAPCHAIN_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR    , "DEVICE_GROUP_PRESENT_CAPABILITIES_KHR")
-  , (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV, "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV")
-  , (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV       , "EXPORT_MEMORY_WIN32_HANDLE_INFO_NV")
-  , (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV       , "IMPORT_MEMORY_WIN32_HANDLE_INFO_NV")
-  , (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV           , "EXPORT_MEMORY_ALLOCATE_INFO_NV")
-  , (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV     , "EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV")
+  , (STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN                     , "VI_SURFACE_CREATE_INFO_NN")
+  , (STRUCTURE_TYPE_VALIDATION_FLAGS_EXT                          , "VALIDATION_FLAGS_EXT")
+  , (STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR        , "DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR                 , "DEVICE_GROUP_PRESENT_INFO_KHR")
+  , (STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR                   , "ACQUIRE_NEXT_IMAGE_INFO_KHR")
+  , (STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR          , "BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR")
+  , (STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR               , "IMAGE_SWAPCHAIN_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR         , "DEVICE_GROUP_PRESENT_CAPABILITIES_KHR")
+  , (STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV     , "WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV")
+  , (STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV            , "EXPORT_MEMORY_WIN32_HANDLE_INFO_NV")
+  , (STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV            , "IMPORT_MEMORY_WIN32_HANDLE_INFO_NV")
+  , (STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV                , "EXPORT_MEMORY_ALLOCATE_INFO_NV")
+  , (STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV          , "EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV")
   , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
     , "PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV"
     )
@@ -3573,17 +3510,12 @@
   , ( STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
     , "RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR"
     )
-  , (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR , "COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR")
-  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR, "PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR")
-  , (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR            , "PIPELINE_RENDERING_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR                 , "RENDERING_ATTACHMENT_INFO_KHR")
-  , (STRUCTURE_TYPE_RENDERING_INFO_KHR                            , "RENDERING_INFO_KHR")
-  , (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD      , "TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD")
-  , (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX             , "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX")
-  , (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX                    , "IMAGE_VIEW_HANDLE_INFO_NVX")
-  , (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX                            , "CU_LAUNCH_INFO_NVX")
-  , (STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX                   , "CU_FUNCTION_CREATE_INFO_NVX")
-  , (STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX                     , "CU_MODULE_CREATE_INFO_NVX")
+  , (STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, "TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD")
+  , (STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX       , "IMAGE_VIEW_ADDRESS_PROPERTIES_NVX")
+  , (STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX              , "IMAGE_VIEW_HANDLE_INFO_NVX")
+  , (STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX                      , "CU_LAUNCH_INFO_NVX")
+  , (STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX             , "CU_FUNCTION_CREATE_INFO_NVX")
+  , (STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX               , "CU_MODULE_CREATE_INFO_NVX")
   , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
     , "PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT"
     )
@@ -3600,17 +3532,91 @@
   , ( STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
     , "PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD"
     )
-  , (STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT         , "DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT")
-  , (STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR                 , "WIN32_SURFACE_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR               , "ANDROID_SURFACE_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR               , "WAYLAND_SURFACE_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR                   , "XCB_SURFACE_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR                  , "XLIB_SURFACE_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR                      , "DISPLAY_PRESENT_INFO_KHR")
-  , (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR               , "DISPLAY_SURFACE_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR                  , "DISPLAY_MODE_CREATE_INFO_KHR")
-  , (STRUCTURE_TYPE_PRESENT_INFO_KHR                              , "PRESENT_INFO_KHR")
-  , (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                     , "SWAPCHAIN_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT   , "DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT")
+  , (STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR           , "WIN32_SURFACE_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR         , "ANDROID_SURFACE_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR         , "WAYLAND_SURFACE_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR             , "XCB_SURFACE_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR            , "XLIB_SURFACE_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR                , "DISPLAY_PRESENT_INFO_KHR")
+  , (STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR         , "DISPLAY_SURFACE_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR            , "DISPLAY_MODE_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_PRESENT_INFO_KHR                        , "PRESENT_INFO_KHR")
+  , (STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR               , "SWAPCHAIN_CREATE_INFO_KHR")
+  , (STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS        , "DEVICE_IMAGE_MEMORY_REQUIREMENTS")
+  , (STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS       , "DEVICE_BUFFER_MEMORY_REQUIREMENTS")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES, "PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES  , "PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES")
+  , (STRUCTURE_TYPE_FORMAT_PROPERTIES_3                     , "FORMAT_PROPERTIES_3")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES
+    , "PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES"
+    )
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES
+    , "PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES"
+    )
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES"
+    )
+  , (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO , "COMMAND_BUFFER_INHERITANCE_RENDERING_INFO")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES, "PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES")
+  , (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO            , "PIPELINE_RENDERING_CREATE_INFO")
+  , (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO                 , "RENDERING_ATTACHMENT_INFO")
+  , (STRUCTURE_TYPE_RENDERING_INFO                            , "RENDERING_INFO")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
+    , "PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES"
+    )
+  , ( STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO
+    , "DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO"
+    )
+  , (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK      , "WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES, "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES  , "PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES , "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES")
+  , ( STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO
+    , "PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO"
+    )
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES
+    , "PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES"
+    )
+  , (STRUCTURE_TYPE_IMAGE_RESOLVE_2                          , "IMAGE_RESOLVE_2")
+  , (STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2                      , "BUFFER_IMAGE_COPY_2")
+  , (STRUCTURE_TYPE_IMAGE_BLIT_2                             , "IMAGE_BLIT_2")
+  , (STRUCTURE_TYPE_IMAGE_COPY_2                             , "IMAGE_COPY_2")
+  , (STRUCTURE_TYPE_BUFFER_COPY_2                            , "BUFFER_COPY_2")
+  , (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2                     , "RESOLVE_IMAGE_INFO_2")
+  , (STRUCTURE_TYPE_BLIT_IMAGE_INFO_2                        , "BLIT_IMAGE_INFO_2")
+  , (STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2              , "COPY_IMAGE_TO_BUFFER_INFO_2")
+  , (STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2              , "COPY_BUFFER_TO_IMAGE_INFO_2")
+  , (STRUCTURE_TYPE_COPY_IMAGE_INFO_2                        , "COPY_IMAGE_INFO_2")
+  , (STRUCTURE_TYPE_COPY_BUFFER_INFO_2                       , "COPY_BUFFER_INFO_2")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, "PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES
+    , "PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES"
+    )
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES, "PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES")
+  , (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO                , "COMMAND_BUFFER_SUBMIT_INFO")
+  , (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO                     , "SEMAPHORE_SUBMIT_INFO")
+  , (STRUCTURE_TYPE_SUBMIT_INFO_2                             , "SUBMIT_INFO_2")
+  , (STRUCTURE_TYPE_DEPENDENCY_INFO                           , "DEPENDENCY_INFO")
+  , (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2                    , "IMAGE_MEMORY_BARRIER_2")
+  , (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2                   , "BUFFER_MEMORY_BARRIER_2")
+  , (STRUCTURE_TYPE_MEMORY_BARRIER_2                          , "MEMORY_BARRIER_2")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
+    , "PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES"
+    )
+  , (STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO        , "PRIVATE_DATA_SLOT_CREATE_INFO")
+  , (STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO      , "DEVICE_PRIVATE_DATA_CREATE_INFO")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES, "PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES"
+    )
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES, "PHYSICAL_DEVICE_TOOL_PROPERTIES")
+  , ( STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES
+    , "PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES"
+    )
+  , (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO        , "PIPELINE_CREATION_FEEDBACK_CREATE_INFO")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES         , "PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES")
+  , (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES           , "PHYSICAL_DEVICE_VULKAN_1_3_FEATURES")
   , (STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO     , "DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO")
   , (STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO   , "MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO")
   , (STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO     , "BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO")
diff --git a/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs b/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
--- a/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
+++ b/src/Vulkan/Core10/Enums/SubpassDescriptionFlagBits.hs
@@ -75,7 +75,7 @@
 -- | 'SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX' specifies that shaders
 -- compiled for this subpass write the attributes for all views in a single
 -- invocation of each
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
 -- All pipelines compiled against a subpass that includes this bit /must/
 -- write per-view attributes to the @*PerViewNV[]@ shader outputs, in
 -- addition to the non-per-view (e.g. @Position@) outputs.
diff --git a/src/Vulkan/Core10/Event.hs b/src/Vulkan/Core10/Event.hs
--- a/src/Vulkan/Core10/Event.hs
+++ b/src/Vulkan/Core10/Event.hs
@@ -87,7 +87,7 @@
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@events@
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', then the implementation
 --     does not support
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-events events>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-events events>,
 --     and 'createEvent' /must/ not be used
 --
 -- == Valid Usage (Implicit)
@@ -131,7 +131,7 @@
                -- information about how the event is to be created.
                EventCreateInfo
             -> -- | @pAllocator@ controls host memory allocation as described in the
-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                -- chapter.
                ("allocator" ::: Maybe AllocationCallbacks)
             -> io (Event)
@@ -219,7 +219,7 @@
              -> -- | @event@ is the handle of the event to destroy.
                 Event
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io ()
@@ -264,7 +264,7 @@
 -- If a 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent' or
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent' command is in a
 -- command buffer that is in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
 -- then the value returned by this command /may/ immediately be out of
 -- date.
 --
@@ -304,7 +304,7 @@
                   --
                   -- #VUID-vkGetEventStatus-event-03940# @event@ /must/ not have been created
                   -- with
-                  -- 'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT_KHR'
+                  -- 'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT'
                   --
                   -- #VUID-vkGetEventStatus-event-parameter# @event@ /must/ be a valid
                   -- 'Vulkan.Core10.Handles.Event' handle
@@ -344,7 +344,7 @@
 --
 -- -   #VUID-vkSetEvent-event-03941# @event@ /must/ not have been created
 --     with
---     'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT_KHR'
+--     'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT'
 --
 -- == Valid Usage (Implicit)
 --
@@ -420,12 +420,12 @@
 --
 -- -   #VUID-vkResetEvent-event-03822# There /must/ be an execution
 --     dependency between 'resetEvent' and the execution of any
---     'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR' that
---     includes @event@ in its @pEvents@ parameter
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2'
+--     that includes @event@ in its @pEvents@ parameter
 --
 -- -   #VUID-vkResetEvent-event-03823# @event@ /must/ not have been created
 --     with
---     'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT_KHR'
+--     'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT'
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core10/ExtensionDiscovery.hs b/src/Vulkan/Core10/ExtensionDiscovery.hs
--- a/src/Vulkan/Core10/ExtensionDiscovery.hs
+++ b/src/Vulkan/Core10/ExtensionDiscovery.hs
@@ -184,6 +184,12 @@
 -- be enabled together due to behavioral differences, or any extension that
 -- cannot be enabled against the advertised version.
 --
+-- Implementations claiming support for the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#roadmap-2022 Roadmap 2022>
+-- profile /must/ advertise the
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>
+-- extension in @pProperties@.
+--
 -- == Valid Usage (Implicit)
 --
 -- -   #VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter#
diff --git a/src/Vulkan/Core10/Fence.hs b/src/Vulkan/Core10/Fence.hs
--- a/src/Vulkan/Core10/Fence.hs
+++ b/src/Vulkan/Core10/Fence.hs
@@ -139,7 +139,7 @@
                -- information about how the fence is to be created.
                (FenceCreateInfo a)
             -> -- | @pAllocator@ controls host memory allocation as described in the
-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                -- chapter.
                ("allocator" ::: Maybe AllocationCallbacks)
             -> io (Fence)
@@ -184,7 +184,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkDestroyFence-fence-01120# All
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission>
 --     commands that refer to @fence@ /must/ have completed execution
 --
 -- -   #VUID-vkDestroyFence-fence-01121# If
@@ -228,7 +228,7 @@
              -> -- | @fence@ is the handle of the fence to destroy.
                 Fence
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io ()
@@ -256,7 +256,7 @@
 -- = Description
 --
 -- If any member of @pFences@ currently has its
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing payload imported>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing payload imported>
 -- with temporary permanence, that fence’s prior permanent payload is first
 -- restored. The remaining operations described therefore operate on the
 -- restored payload.
@@ -349,18 +349,18 @@
 -- | 'Vulkan.Core10.Enums.Result.NOT_READY'         | The fence specified by @fence@ is unsignaled.                                                                          |
 -- +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
 -- | 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST' | The device has been lost. See                                                                                          |
--- |                                                | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>. |
+-- |                                                | <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>. |
 -- +------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+
 --
 -- Fence Object Status Codes
 --
 -- If a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission>
 -- command is pending execution, then the value returned by this command
 -- /may/ immediately be out of date.
 --
 -- If the device has been lost (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>),
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>),
 -- 'getFenceStatus' /may/ return any of the above status codes. If the
 -- device has been lost and 'getFenceStatus' is called repeatedly, it will
 -- eventually return either 'Vulkan.Core10.Enums.Result.SUCCESS' or
@@ -476,7 +476,7 @@
 -- @timeout@ has expired.
 --
 -- If device loss occurs (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)
 -- before the timeout has expired, 'waitForFences' /must/ return in finite
 -- time with either 'Vulkan.Core10.Enums.Result.SUCCESS' or
 -- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'.
diff --git a/src/Vulkan/Core10/FuncPointers.hs b/src/Vulkan/Core10/FuncPointers.hs
--- a/src/Vulkan/Core10/FuncPointers.hs
+++ b/src/Vulkan/Core10/FuncPointers.hs
@@ -41,7 +41,7 @@
 --
 -- = Description
 --
--- > described link:https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-host-allocation-scope[here^].
+-- > described link:https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-host-allocation-scope[here^].
 --
 -- = See Also
 --
@@ -120,7 +120,7 @@
 -- generate 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' at the
 -- appropriate time for the command in which the condition was detected, as
 -- described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Return Codes>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-errorcodes Return Codes>.
 --
 -- If the implementation is able to continue correct processing of the
 -- current command without the requested allocation, then it /may/ do so,
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
@@ -117,13 +117,13 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageBlit',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageBlit2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageBlit2',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageResolve2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'
 data Offset3D = Offset3D
   { -- | @x@ is the x offset.
@@ -260,13 +260,13 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageCopy2',
 -- 'Vulkan.Core10.Image.ImageCreateInfo',
 -- 'Vulkan.Core10.DeviceInitialization.ImageFormatProperties',
 -- 'Vulkan.Core10.CommandBufferBuilding.ImageResolve',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ImageResolve2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ImageResolve2',
 -- 'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageFormatProperties',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind'
@@ -335,10 +335,11 @@
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV',
 -- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getPhysicalDevicePresentRectanglesKHR'
 data Rect2D = Rect2D
@@ -447,7 +448,7 @@
 -- 'Vulkan.Extensions.VK_EXT_device_memory_report.PhysicalDeviceDeviceMemoryReportFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostics_config.PhysicalDeviceDiagnosticsConfigFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_physical_device_drm.PhysicalDeviceDrmPropertiesEXT',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PhysicalDeviceDynamicRenderingFeatures',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.PhysicalDeviceExclusiveScissorFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.PhysicalDeviceExtendedDynamicState2FeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.PhysicalDeviceExtendedDynamicStateFeaturesEXT',
@@ -464,21 +465,21 @@
 -- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsFeaturesNV',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRateFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_global_priority_query.PhysicalDeviceGlobalPriorityQueryFeaturesEXT',
+-- 'Vulkan.Extensions.VK_KHR_global_priority.PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group_creation.PhysicalDeviceGroupProperties',
 -- 'Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset.PhysicalDeviceHostQueryResetFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
--- 'Vulkan.Extensions.VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_image_robustness.PhysicalDeviceImageRobustnessFeatures',
 -- 'Vulkan.Extensions.VK_EXT_image_view_min_lod.PhysicalDeviceImageViewMinLodFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.PhysicalDeviceImagelessFramebufferFeatures',
 -- 'Vulkan.Extensions.VK_EXT_index_type_uint8.PhysicalDeviceIndexTypeUint8FeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.PhysicalDeviceInheritedViewportScissorFeaturesNV',
--- 'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures',
 -- 'Vulkan.Extensions.VK_HUAWEI_invocation_mask.PhysicalDeviceInvocationMaskFeaturesHUAWEI',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_linear_color_attachment.PhysicalDeviceLinearColorAttachmentFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4FeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Features',
 -- 'Vulkan.Extensions.VK_EXT_memory_priority.PhysicalDeviceMemoryPriorityFeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderFeaturesNV',
 -- 'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawFeaturesEXT',
@@ -488,13 +489,13 @@
 -- 'Vulkan.Extensions.VK_EXT_pageable_device_local_memory.PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_performance_query.PhysicalDevicePerformanceQueryPropertiesKHR',
--- 'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control.PhysicalDevicePipelineCreationCacheControlFeatures',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.PhysicalDevicePipelineExecutablePropertiesFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_present_id.PhysicalDevicePresentIdFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_present_wait.PhysicalDevicePresentWaitFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_primitive_topology_list_restart.PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_private_data.PhysicalDevicePrivateDataFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.PhysicalDevicePrivateDataFeatures',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryFeatures',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory.PhysicalDeviceProtectedMemoryProperties',
 -- 'Vulkan.Extensions.VK_EXT_provoking_vertex.PhysicalDeviceProvokingVertexFeaturesEXT',
@@ -515,27 +516,27 @@
 -- 'Vulkan.Extensions.VK_EXT_shader_atomic_float.PhysicalDeviceShaderAtomicFloatFeaturesEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_atomic_int64.PhysicalDeviceShaderAtomicInt64Features',
 -- 'Vulkan.Extensions.VK_KHR_shader_clock.PhysicalDeviceShaderClockFeaturesKHR',
--- 'Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation.PhysicalDeviceShaderDemoteToHelperInvocationFeatures',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters.PhysicalDeviceShaderDrawParametersFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8.PhysicalDeviceShaderFloat16Int8Features',
 -- 'Vulkan.Extensions.VK_EXT_shader_image_atomic_int64.PhysicalDeviceShaderImageAtomicInt64FeaturesEXT',
 -- 'Vulkan.Extensions.VK_NV_shader_image_footprint.PhysicalDeviceShaderImageFootprintFeaturesNV',
--- 'Vulkan.Extensions.VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductPropertiesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductFeatures',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductProperties',
 -- 'Vulkan.Extensions.VK_INTEL_shader_integer_functions2.PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL',
 -- 'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsFeaturesNV',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types.PhysicalDeviceShaderSubgroupExtendedTypesFeatures',
 -- 'Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow.PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR',
--- 'Vulkan.Extensions.VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation.PhysicalDeviceShaderTerminateInvocationFeatures',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImageFeaturesNV',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceSparseProperties',
 -- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
--- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeatures',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingFeaturesHUAWEI',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.PhysicalDeviceSynchronization2FeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.PhysicalDeviceSynchronization2Features',
 -- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentFeaturesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr.PhysicalDeviceTextureCompressionASTCHDRFeatures',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreFeatures',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
@@ -547,11 +548,13 @@
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Features',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan12Properties',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Features',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Properties',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model.PhysicalDeviceVulkanMemoryModelFeatures',
 -- 'Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout.PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR',
 -- 'Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats.PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT',
 -- 'Vulkan.Extensions.VK_EXT_ycbcr_image_arrays.PhysicalDeviceYcbcrImageArraysFeaturesEXT',
--- 'Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory.PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures',
 -- 'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PipelineColorBlendAdvancedStateCreateInfoEXT',
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendAttachmentState',
 -- 'Vulkan.Core10.Pipeline.PipelineColorBlendStateCreateInfo',
@@ -588,12 +591,19 @@
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdExecuteGeneratedCommandsNV',
 -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable',
 -- '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.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT',
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',
 -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',
@@ -742,12 +752,12 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferCopy2',
 -- 'Vulkan.Core10.Buffer.BufferCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.BufferMemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
@@ -765,12 +775,13 @@
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4PropertiesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
 -- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Properties',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
@@ -786,6 +797,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
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
@@ -91,12 +91,12 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferCopy2',
 -- 'Vulkan.Core10.Buffer.BufferCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BufferImageCopy2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BufferImageCopy2',
 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.BufferMemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
 -- 'Vulkan.Core10.DescriptorSet.DescriptorBufferInfo',
@@ -114,12 +114,13 @@
 -- 'Vulkan.Extensions.VK_EXT_external_memory_host.PhysicalDeviceExternalMemoryHostPropertiesEXT',
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
--- 'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4PropertiesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
 -- 'Vulkan.Extensions.VK_EXT_memory_budget.PhysicalDeviceMemoryBudgetPropertiesEXT',
 -- 'Vulkan.Extensions.VK_EXT_robustness2.PhysicalDeviceRobustness2PropertiesEXT',
--- 'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
 -- 'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
+-- 'Vulkan.Core13.PhysicalDeviceVulkan13Properties',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBind',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseMemoryBind',
@@ -135,6 +136,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
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
@@ -190,6 +190,7 @@
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getPhysicalDeviceSurfacePresentModes2EXT',
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfacePresentModesKHR',
 -- 'Vulkan.Extensions.VK_KHR_surface.getPhysicalDeviceSurfaceSupportKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_tooling_info.getPhysicalDeviceToolProperties',
 -- 'Vulkan.Extensions.VK_EXT_tooling_info.getPhysicalDeviceToolPropertiesEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoCapabilitiesKHR vkGetPhysicalDeviceVideoCapabilitiesKHR>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkGetPhysicalDeviceVideoFormatPropertiesKHR vkGetPhysicalDeviceVideoFormatPropertiesKHR>,
@@ -263,6 +264,7 @@
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.createIndirectCommandsLayoutNV',
 -- 'Vulkan.Core10.PipelineCache.createPipelineCache',
 -- 'Vulkan.Core10.PipelineLayout.createPipelineLayout',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.createPrivateDataSlot',
 -- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT',
 -- 'Vulkan.Core10.Query.createQueryPool',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
@@ -305,6 +307,7 @@
 -- 'Vulkan.Core10.Pipeline.destroyPipeline',
 -- 'Vulkan.Core10.PipelineCache.destroyPipelineCache',
 -- 'Vulkan.Core10.PipelineLayout.destroyPipelineLayout',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.destroyPrivateDataSlot',
 -- 'Vulkan.Extensions.VK_EXT_private_data.destroyPrivateDataSlotEXT',
 -- 'Vulkan.Core10.Query.destroyQueryPool',
 -- 'Vulkan.Core10.Pass.destroyRenderPass',
@@ -343,13 +346,16 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.getDescriptorSetLayoutSupport',
 -- 'Vulkan.Extensions.VK_KHR_maintenance3.getDescriptorSetLayoutSupportKHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.getDeviceAccelerationStructureCompatibilityKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceBufferMemoryRequirements',
 -- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceBufferMemoryRequirementsKHR',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.getDeviceGroupPeerMemoryFeatures',
 -- 'Vulkan.Extensions.VK_KHR_device_group.getDeviceGroupPeerMemoryFeaturesKHR',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupPresentCapabilitiesKHR',
 -- 'Vulkan.Extensions.VK_EXT_full_screen_exclusive.getDeviceGroupSurfacePresentModes2EXT',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.getDeviceGroupSurfacePresentModesKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageMemoryRequirements',
 -- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirements',
 -- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirementsKHR',
 -- 'Vulkan.Core10.Memory.getDeviceMemoryCommitment',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.getDeviceMemoryOpaqueCaptureAddress',
@@ -389,6 +395,7 @@
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableInternalRepresentationsKHR',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutablePropertiesKHR',
 -- 'Vulkan.Extensions.VK_KHR_pipeline_executable_properties.getPipelineExecutableStatisticsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.getPrivateData',
 -- 'Vulkan.Extensions.VK_EXT_private_data.getPrivateDataEXT',
 -- 'Vulkan.Core10.Query.getQueryPoolResults',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.getRayTracingCaptureReplayShaderGroupHandlesKHR',
@@ -436,6 +443,7 @@
 -- 'Vulkan.Core10.Event.setEvent',
 -- 'Vulkan.Extensions.VK_EXT_hdr_metadata.setHdrMetadataEXT',
 -- 'Vulkan.Extensions.VK_AMD_display_native_hdr.setLocalDimmingAMD',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.setPrivateData',
 -- 'Vulkan.Extensions.VK_EXT_private_data.setPrivateDataEXT',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.signalSemaphore',
 -- 'Vulkan.Extensions.VK_KHR_timeline_semaphore.signalSemaphoreKHR',
@@ -482,6 +490,7 @@
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.queueSetPerformanceConfigurationINTEL',
 -- 'Vulkan.Core10.Queue.queueSubmit',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.queueSubmit2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.queueSubmit2KHR',
 -- 'Vulkan.Core10.Queue.queueWaitIdle'
 data Queue = Queue
@@ -503,7 +512,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_KHR_synchronization2.CommandBufferSubmitInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.CommandBufferSubmitInfo',
 -- 'Vulkan.Core10.Queue.SubmitInfo',
 -- 'Vulkan.Core10.CommandBuffer.allocateCommandBuffers',
 -- 'Vulkan.Core10.CommandBuffer.beginCommandBuffer',
@@ -514,6 +523,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdBeginRenderPass2',
 -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdBeginRenderPass2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 -- '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>,
@@ -525,8 +535,10 @@
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdBindShadingRateImageNV',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdBlitImage2',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdBuildAccelerationStructuresIndirectKHR',
@@ -539,12 +551,16 @@
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdCopyAccelerationStructureNV',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyAccelerationStructureToMemoryKHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBuffer2',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBuffer2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyBufferToImage2',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImage2',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImage2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdCopyImageToBuffer2',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdCopyMemoryToAccelerationStructureKHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults',
@@ -581,6 +597,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdEndRenderPass2',
 -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdEndRenderPass2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdEndRendering',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdEndRenderingKHR',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdEndVideoCodingKHR vkCmdEndVideoCodingKHR>,
@@ -592,36 +609,47 @@
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.cmdNextSubpass2',
 -- 'Vulkan.Extensions.VK_KHR_create_renderpass2.cmdNextSubpass2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPipelineBarrier',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdPipelineBarrier2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdPipelineBarrier2KHR',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdPushConstants',
 -- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetKHR',
 -- 'Vulkan.Extensions.VK_KHR_push_descriptor.cmdPushDescriptorSetWithTemplateKHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdResetEvent2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetQueryPool',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.cmdResolveImage2',
 -- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdResolveImage2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetBlendConstants',
 -- 'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.cmdSetCheckpointNV',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetCoarseSampleOrderNV',
 -- 'Vulkan.Extensions.VK_EXT_color_write_enable.cmdSetColorWriteEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetCullMode',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetCullModeEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBias',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetDepthBounds',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthBoundsTestEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthCompareOp',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetDepthCompareOpEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetDepthTestEnable',
 -- '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.Core11.Promoted_From_VK_KHR_device_group.cmdSetDeviceMask',
 -- 'Vulkan.Extensions.VK_KHR_device_group.cmdSetDeviceMaskKHR',
 -- 'Vulkan.Extensions.VK_EXT_discard_rectangles.cmdSetDiscardRectangleEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR',
 -- 'Vulkan.Extensions.VK_NV_scissor_exclusive.cmdSetExclusiveScissorNV',
 -- 'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.cmdSetFragmentShadingRateEnumNV',
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.cmdSetFragmentShadingRateKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetFrontFace',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetFrontFaceEXT',
 -- 'Vulkan.Extensions.VK_EXT_line_rasterization.cmdSetLineStippleEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetLineWidth',
@@ -630,22 +658,29 @@
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceMarkerINTEL',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceOverrideINTEL',
 -- 'Vulkan.Extensions.VK_INTEL_performance_query.cmdSetPerformanceStreamMarkerINTEL',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopology',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdSetRayTracingPipelineStackSizeKHR',
 -- 'Vulkan.Extensions.VK_EXT_sample_locations.cmdSetSampleLocationsEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetScissor',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilCompareMask',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilOp',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilOpEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilReference',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetStencilTestEnable',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetStencilTestEnableEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetStencilWriteMask',
 -- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',
 -- 'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV',
 -- 'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT',
 -- 'Vulkan.Extensions.VK_HUAWEI_subpass_shading.cmdSubpassShadingHUAWEI',
 -- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.cmdTraceRaysIndirectKHR',
@@ -653,12 +688,14 @@
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdTraceRaysNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdUpdateBuffer',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR',
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteBufferMarker2AMD',
 -- 'Vulkan.Extensions.VK_AMD_buffer_marker.cmdWriteBufferMarkerAMD',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR',
 -- 'Vulkan.Core10.CommandBuffer.endCommandBuffer',
 -- 'Vulkan.Core10.CommandBuffer.freeCommandBuffers',
@@ -743,13 +780,13 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindBufferMemoryInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address.BufferDeviceAddressInfo',
 -- 'Vulkan.Core10.OtherTypes.BufferMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.BufferMemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.BufferMemoryBarrier2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.BufferMemoryRequirementsInfo2',
 -- 'Vulkan.Core10.BufferView.BufferViewCreateInfo',
 -- 'Vulkan.Extensions.VK_EXT_conditional_rendering.ConditionalRenderingBeginInfoEXT',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferToImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageToBufferInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferInfo2',
+-- '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.Core10.DescriptorSet.DescriptorBufferInfo',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.GeneratedCommandsInfoNV',
@@ -765,6 +802,7 @@
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer',
 -- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBindTransformFeedbackBuffersEXT',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdBuildAccelerationStructureNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer',
@@ -824,18 +862,18 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2.BindImageMemoryInfo',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.BlitImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyBufferToImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageInfo2KHR',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.CopyImageToBufferInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.BlitImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyBufferToImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageInfo2',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.CopyImageToBufferInfo2',
 -- 'Vulkan.Extensions.VK_NV_dedicated_allocation.DedicatedAllocationMemoryAllocateInfoNV',
 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.ImageMemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageMemoryRequirementsInfo2',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.ImageSparseMemoryRequirementsInfo2',
 -- 'Vulkan.Core10.ImageView.ImageViewCreateInfo',
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_dedicated_allocation.MemoryDedicatedAllocateInfo',
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.ResolveImageInfo2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2.ResolveImageInfo2',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryBindInfo',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageOpaqueMemoryBindInfo',
 -- 'Vulkan.Core10.MemoryManagement.bindImageMemory',
@@ -870,7 +908,7 @@
 -- 'Vulkan.Core10.Pass.FramebufferCreateInfo',
 -- 'Vulkan.Extensions.VK_NVX_image_view_handle.ImageViewHandleInfoNVX',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.RenderPassAttachmentBeginInfo',
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT',
 -- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR',
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoPictureResourceKHR VkVideoPictureResourceKHR>,
@@ -1061,6 +1099,7 @@
 -- 'Vulkan.Core10.Fence.getFenceStatus',
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.queueBindSparse',
 -- 'Vulkan.Core10.Queue.queueSubmit',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.queueSubmit2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.queueSubmit2KHR',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDeviceEventEXT',
 -- 'Vulkan.Extensions.VK_EXT_display_control.registerDisplayEventEXT',
@@ -1089,7 +1128,7 @@
 -- 'Vulkan.Extensions.VK_KHR_external_semaphore_win32.SemaphoreGetWin32HandleInfoKHR',
 -- 'Vulkan.Extensions.VK_FUCHSIA_external_semaphore.SemaphoreGetZirconHandleInfoFUCHSIA',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreSignalInfo',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.SemaphoreSubmitInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SemaphoreSubmitInfo',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.SemaphoreWaitInfo',
 -- 'Vulkan.Core10.Queue.SubmitInfo',
 -- 'Vulkan.Extensions.VK_KHR_swapchain.acquireNextImageKHR',
@@ -1112,10 +1151,13 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdResetEvent2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdResetEvent2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdSetEvent2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWaitEvents2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR',
 -- 'Vulkan.Core10.Event.createEvent', 'Vulkan.Core10.Event.destroyEvent',
 -- 'Vulkan.Core10.Event.getEventStatus', 'Vulkan.Core10.Event.resetEvent',
@@ -1143,6 +1185,7 @@
 -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.cmdWriteAccelerationStructuresPropertiesKHR',
 -- 'Vulkan.Extensions.VK_NV_ray_tracing.cmdWriteAccelerationStructuresPropertiesNV',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
 -- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR',
 -- 'Vulkan.Core10.Query.createQueryPool',
 -- 'Vulkan.Core10.Query.destroyQueryPool',
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
@@ -123,7 +123,7 @@
 -- -   #VUID-vkCreateImage-pNext-06389# If a
 --     'Vulkan.Extensions.VK_FUCHSIA_buffer_collection.BufferCollectionImageCreateInfoFUCHSIA'
 --     has been chained to @pNext@, @pCreateInfo@ /must/ match the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sysmem-chosen-create-infos Sysmem chosen >
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sysmem-chosen-create-infos Sysmem chosen >
 --     excepting members 'ImageCreateInfo'::@extent@ and
 --     'ImageCreateInfo'::@usage@ in the match criteria
 --
@@ -168,7 +168,7 @@
                -- parameters to be used to create the image.
                (ImageCreateInfo a)
             -> -- | @pAllocator@ controls host memory allocation as described in the
-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                -- chapter.
                ("allocator" ::: Maybe AllocationCallbacks)
             -> io (Image)
@@ -261,7 +261,7 @@
              -> -- | @image@ is the image to destroy.
                 Image
              -> -- | @pAllocator@ controls host memory allocation as described in the
-                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                 -- chapter.
                 ("allocator" ::: Maybe AllocationCallbacks)
              -> io ()
@@ -290,14 +290,14 @@
 -- = Description
 --
 -- If the image is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>,
 -- then the returned layout is valid for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess host access>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-hostaccess host access>.
 --
 -- If the image’s tiling is
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and its format is
 -- a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
 -- then 'getImageSubresourceLayout' describes one /format plane/ of the
 -- image. If the image’s tiling is
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
@@ -305,10 +305,10 @@
 -- image. If the image’s tiling is
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
 -- and the image is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
 -- then the returned layout has an implementation-dependent meaning; the
 -- vendor of the image’s
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier DRM format modifier>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier DRM format modifier>
 -- /may/ provide documentation that explains how to interpret the returned
 -- layout.
 --
@@ -359,7 +359,7 @@
 -- -   #VUID-vkGetImageSubresourceLayout-format-01581# If the @tiling@ of
 --     the @image@ is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
 --     and its @format@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
 --     with two planes, the @aspectMask@ member of @pSubresource@ /must/ be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
 --     or
@@ -368,7 +368,7 @@
 -- -   #VUID-vkGetImageSubresourceLayout-format-01582# If the @tiling@ of
 --     the @image@ is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
 --     and its @format@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
 --     with three planes, the @aspectMask@ member of @pSubresource@ /must/
 --     be
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
@@ -470,11 +470,11 @@
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
 --
 -- Images created with one of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
 -- have further restrictions on their limits and capabilities compared to
 -- images created with other formats. Creation of images with a format
 -- requiring
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
 -- /may/ not be supported unless other parameters meet all of the
 -- constraints:
 --
@@ -511,7 +511,7 @@
 -- a @usage@ bit is valid if it is supported for at least one of the
 -- formats a 'Vulkan.Core10.Handles.ImageView' created from the image /can/
 -- have (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views Image Views>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views Image Views>
 -- for more detail).
 --
 -- == Image Creation Limits
@@ -528,7 +528,7 @@
 -- referenced by the relevant valid usage statements of 'ImageCreateInfo'.
 --
 -- -   Let @uint64_t imageCreateDrmFormatModifiers[]@ be the set of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifiers>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifiers>
 --     that the resultant image /may/ have.
 --
 --     -   If @tiling@ is not
@@ -548,7 +548,7 @@
 --
 -- -   Let @VkBool32 imageCreateMaybeLinear@ indicate if the resultant
 --     image may be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>.
 --
 --     -   If @tiling@ is
 --         'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', then
@@ -756,7 +756,7 @@
 --
 -- -   #VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251# Each of the
 --     following values (as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --     /must/ not be undefined : @imageCreateMaxMipLevels@,
 --     @imageCreateMaxArrayLayers@, @imageCreateMaxExtent@, and
 --     @imageCreateSampleCounts@
@@ -819,15 +819,15 @@
 --
 -- -   #VUID-VkImageCreateInfo-extent-02252# @extent.width@ /must/ be less
 --     than or equal to @imageCreateMaxExtent.width@ (as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-extent-02253# @extent.height@ /must/ be less
 --     than or equal to @imageCreateMaxExtent.height@ (as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-extent-02254# @extent.depth@ /must/ be less
 --     than or equal to @imageCreateMaxExtent.depth@ (as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00954# If @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D' and @flags@ contains
@@ -849,11 +849,11 @@
 --
 -- -   #VUID-VkImageCreateInfo-mipLevels-02255# @mipLevels@ /must/ be less
 --     than or equal to @imageCreateMaxMipLevels@ (as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-arrayLayers-02256# @arrayLayers@ /must/ be
 --     less than or equal to @imageCreateMaxArrayLayers@ (as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00961# If @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', @arrayLayers@ /must/
@@ -866,7 +866,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CUBE_COMPATIBLE_BIT',
 --     @mipLevels@ /must/ be equal to @1@, and @imageCreateMaybeLinear@ (as
 --     defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE',
 --
 -- -   #VUID-VkImageCreateInfo-samples-02558# If @samples@ is not
@@ -902,14 +902,14 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@
 --
 -- -   #VUID-VkImageCreateInfo-fragmentDensityMapOffset-06514# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
 --     is not enabled and @usage@ includes
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',
 --     @extent.width@ /must/ be less than or equal to
 --     \(\left\lceil{\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\right\rceil\)
 --
 -- -   #VUID-VkImageCreateInfo-fragmentDensityMapOffset-06515# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapOffset fragmentDensityMapOffset>
 --     is not enabled and @usage@ includes
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT',
 --     @extent.height@ /must/ be less than or equal to
@@ -925,22 +925,22 @@
 --
 -- -   #VUID-VkImageCreateInfo-samples-02258# @samples@ /must/ be a bit
 --     value that is set in @imageCreateSampleCounts@ (as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --
 -- -   #VUID-VkImageCreateInfo-usage-00968# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisample multisampled storage images>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageMultisample multisampled storage images>
 --     feature is not enabled, and @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT',
 --     @samples@ /must/ be
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-flags-00969# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseBinding sparse bindings>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseBinding sparse bindings>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_BINDING_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-flags-01924# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_ALIASED_BIT'
 --
@@ -955,21 +955,21 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00971# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage2D sparse residency for 2D images>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyImage2D sparse residency for 2D images>
 --     feature is not enabled, and @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', @flags@ /must/ not
 --     contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00972# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyImage3D sparse residency for 3D images>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyImage3D sparse residency for 3D images>
 --     feature is not enabled, and @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', @flags@ /must/ not
 --     contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00973# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency2Samples sparse residency for images with 2 samples>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency2Samples sparse residency for images with 2 samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT',
@@ -977,7 +977,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00974# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency4Samples sparse residency for images with 4 samples>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency4Samples sparse residency for images with 4 samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_4_BIT',
@@ -985,7 +985,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00975# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency8Samples sparse residency for images with 8 samples>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency8Samples sparse residency for images with 8 samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_8_BIT',
@@ -993,7 +993,7 @@
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SPARSE_RESIDENCY_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-imageType-00976# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidency16Samples sparse residency for images with 16 samples>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidency16Samples sparse residency for images with 16 samples>
 --     feature is not enabled, @imageType@ is
 --     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @samples@ is
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_16_BIT',
@@ -1072,13 +1072,13 @@
 --     then @mipLevels@ /must/ be one, @arrayLayers@ /must/ be one,
 --     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'.
 --     and @imageCreateMaybeLinear@ (as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkImageCreateInfo-flags-01572# If @flags@ contains
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT',
 --     then @format@ /must/ be a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#compressed_image_formats compressed image format>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#compressed_image_formats compressed image format>
 --
 -- -   #VUID-VkImageCreateInfo-flags-01573# If @flags@ contains
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT',
@@ -1098,30 +1098,30 @@
 --
 -- -   #VUID-VkImageCreateInfo-format-06410# If the image @format@ is one
 --     of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
 --     @mipLevels@ /must/ be 1
 --
 -- -   #VUID-VkImageCreateInfo-format-06411# If the image @format@ is one
 --     of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
 --     @samples@ /must/ be
 --     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
 --
 -- -   #VUID-VkImageCreateInfo-format-06412# If the image @format@ is one
 --     of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
 --     @imageType@ /must/ be 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
 --
 -- -   #VUID-VkImageCreateInfo-format-06413# If the image @format@ is one
 --     of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
 --     and the @ycbcrImageArrays@ feature is not enabled, @arrayLayers@
 --     /must/ be 1
 --
 -- -   #VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260# If @format@
 --     is a /multi-planar/ format, and if @imageCreateFormatFeatures@ (as
 --     defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-creation-limits Image Creation Limits>)
 --     does not contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DISJOINT_BIT',
 --     then @flags@ /must/ not contain
@@ -1255,7 +1255,7 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxFramebufferHeight@
 --
 -- -   #VUID-VkImageCreateInfo-format-02538# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderStorageImageMultisample multisampled storage images>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderStorageImageMultisample multisampled storage images>
 --     feature is not enabled, @format@ is a depth-stencil format and the
 --     @pNext@ chain includes a
 --     'Vulkan.Core12.Promoted_From_VK_EXT_separate_stencil_usage.ImageStencilUsageCreateInfo'
@@ -1344,7 +1344,7 @@
 --     is not zero, then all of the formats in
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
 --     /must/ be compatible with the @format@ as described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility compatibility table>
 --
 -- -   #VUID-VkImageCreateInfo-flags-04738# If @flags@ does not contain
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
@@ -1423,7 +1423,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_KHR_maintenance4.DeviceImageMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.DeviceImageMemoryRequirements',
 -- 'Vulkan.Core10.FundamentalTypes.Extent3D',
 -- 'Vulkan.Core10.Enums.Format.Format',
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlags',
@@ -1460,7 +1460,7 @@
   , -- | @samples@ is a
     -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
     -- specifying the number of
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling samples per texel>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling samples per texel>.
     samples :: SampleCountFlagBits
   , -- | @tiling@ is a 'Vulkan.Core10.Enums.ImageTiling.ImageTiling' value
     -- specifying the tiling arrangement of the texel blocks in memory.
@@ -1480,7 +1480,7 @@
   , -- | @initialLayout@ is a 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
     -- specifying the initial 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' of
     -- all image subresources of the image. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-layouts Image Layouts>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-layouts Image Layouts>.
     initialLayout :: ImageLayout
   }
   deriving (Typeable)
@@ -1590,7 +1590,7 @@
 -- = Description
 --
 -- If the image is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>,
 -- then @rowPitch@, @arrayPitch@ and @depthPitch@ describe the layout of
 -- the image subresource in linear memory. For uncompressed formats,
 -- @rowPitch@ is the number of bytes between texels with the same x
@@ -1636,7 +1636,7 @@
 -- interleaved memory allocation.
 --
 -- If the image has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
 -- and its tiling is 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'
 -- , then the @aspectMask@ member of
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.ImageSubresource' /must/
@@ -1658,13 +1658,13 @@
 -- allowed plane index /i/ is defined by the
 -- 'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@
 -- associated with the image’s 'ImageCreateInfo'::@format@ and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier modifier>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier modifier>.
 -- The memory range used by the subresource is described by @offset@ and
 -- @size@. If the image is /disjoint/, then the @offset@ is relative to the
 -- base address of the /memory plane/. If the image is /non-disjoint/, then
 -- the @offset@ is relative to the base address of the image. If the image
 -- is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
 -- then @rowPitch@, @arrayPitch@, and @depthPitch@ have an
 -- implementation-dependent meaning.
 --
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
@@ -140,7 +140,7 @@
                    -- containing parameters to be used to create the image view.
                    (ImageViewCreateInfo a)
                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io (ImageView)
@@ -229,7 +229,7 @@
                  -> -- | @imageView@ is the image view to destroy.
                     ImageView
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io ()
@@ -364,7 +364,7 @@
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT' if
 -- @format@ is a color, depth-only or stencil-only format, respectively,
 -- except if @format@ is a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>.
 -- If using a depth\/stencil format with both depth and stencil components,
 -- @aspectMask@ /must/ include at least one of
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
@@ -394,14 +394,14 @@
 -- both depth and stencil image subresources are used.
 --
 -- When creating a 'Vulkan.Core10.Handles.ImageView', if
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- is enabled in the sampler, the @aspectMask@ of a @subresourceRange@ used
 -- by the 'Vulkan.Core10.Handles.ImageView' /must/ be
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'.
 --
 -- When creating a 'Vulkan.Core10.Handles.ImageView', if sampler Y′CBCR
 -- conversion is not enabled in the sampler and the image @format@ is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,
 -- the image /must/ have been created with
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT',
 -- and the @aspectMask@ of the 'Vulkan.Core10.Handles.ImageView'’s
@@ -447,7 +447,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_0 VK_VERSION_1_0>,
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags',
 -- 'Vulkan.Core10.OtherTypes.ImageMemoryBarrier',
--- 'Vulkan.Extensions.VK_KHR_synchronization2.ImageMemoryBarrier2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.ImageMemoryBarrier2',
 -- 'ImageViewCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearColorImage',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdClearDepthStencilImage'
@@ -555,13 +555,13 @@
 -- If @image@ was created with the
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
 -- flag, and if the @format@ of the image is not
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>,
 -- @format@ /can/ be different from the image’s format, but if @image@ was
 -- created without the
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
 -- flag and they are not equal they /must/ be /compatible/. Image format
 -- compatibility is defined in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
 -- section. Views of compatible formats will have the same mapping between
 -- texel coordinates and memory locations irrespective of the @format@,
 -- with only the interpretation of the bit pattern changing.
@@ -575,14 +575,14 @@
 -- read through a view with a floating point format. Similarly, a value
 -- written through a signed normalized format that has a bit pattern
 -- exactly equal to -2b /may/ be changed to -2b + 1 as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedfpconv Conversion from Normalized Fixed-Point to Floating-Point>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-fixedfpconv Conversion from Normalized Fixed-Point to Floating-Point>.
 --
 -- If @image@ was created with the
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
 -- flag, @format@ /must/ be /compatible/ with the image’s format as
 -- described above, or /must/ be an uncompressed format in which case it
 -- /must/ be /size-compatible/ with the image’s format, as defined for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-size-compatibility copying data between images>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies-images-format-size-compatibility copying data between images>.
 -- In this case, the resulting image view’s texel dimensions equal the
 -- dimensions of the selected mip level divided by the compressed texel
 -- block size and rounded up.
@@ -593,10 +593,10 @@
 -- storage image descriptors, input attachment descriptors, framebuffer
 -- attachments, and any 'Vulkan.Core10.Handles.ImageView' used with a
 -- combined image sampler that enables
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y’CBCR conversion>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y’CBCR conversion>.
 --
 -- If the image view is to be used with a sampler which supports
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>,
 -- an /identically defined object/ of type
 -- 'Vulkan.Core11.Handles.SamplerYcbcrConversion' to that used to create
 -- the sampler /must/ be passed to 'createImageView' in a
@@ -608,37 +608,37 @@
 -- when sampling the image.
 --
 -- If the image has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 -- @format@ and @subresourceRange.aspectMask@ is
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT', then
 -- the @format@ /must/ be identical to the image @format@, and the sampler
 -- to be used with the image view /must/ enable
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
 --
 -- If @image@ was created with the
 -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
 -- and the image has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 -- @format@, and if @subresourceRange.aspectMask@ is
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', or
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT',
 -- @format@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes compatible>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes compatible>
 -- with the corresponding plane of the image, and the sampler to be used
 -- with the image view /must/ not enable
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
 -- The @width@ and @height@ of the single-plane image view /must/ be
 -- derived from the multi-planar image’s dimensions in the manner listed
 -- for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes plane compatibility>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes plane compatibility>
 -- for the plane.
 --
 -- Any view of an image plane will have the same mapping between texel
 -- coordinates and memory locations as used by the components of the color
 -- aspect, subject to the formulae relating texel coordinates to
 -- lower-resolution planes as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction Chroma Reconstruction>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction Chroma Reconstruction>.
 -- That is, if an R or B plane has a reduced resolution relative to the G
 -- plane of the multi-planar image, the image view operates using the
 -- (/uplane/, /vplane/) unnormalized coordinates of the reduced-resolution
@@ -681,7 +681,7 @@
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-viewType-01004# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imageCubeArray image cube map arrays>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-imageCubeArray image cube map arrays>
 --     feature is not enabled, @viewType@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_CUBE_ARRAY'
 --
@@ -718,67 +718,67 @@
 -- -   #VUID-VkImageViewCreateInfo-image-04441# @image@ /must/ have been
 --     created with a @usage@ value containing at least one of the usages
 --     defined in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#valid-imageview-imageusage valid image usage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#valid-imageview-imageusage valid image usage>
 --     list for image views
 --
 -- -   #VUID-VkImageViewCreateInfo-None-02273# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     of the resultant image view /must/ contain at least one bit
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-02274# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',
 --     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     of the resultant image view /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-02275# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_STORAGE_BIT',
 --     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_STORAGE_IMAGE_BIT'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-02276# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',
 --     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-02277# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
 --     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-06516# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT',
 --     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV',
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV',
 --     if the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-06517# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',
 --     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     must contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV',
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV',
 --     if the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-02652# If @usage@ contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT',
 --     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain at least one of
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --     or
@@ -834,7 +834,7 @@
 --     computed from @baseMipLevel@ and @extent.depth@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created,
 --     according to the formula defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>
 --
 -- -   #VUID-VkImageViewCreateInfo-subresourceRange-02725# If
 --     @subresourceRange.layerCount@ is not
@@ -850,7 +850,7 @@
 --     @baseMipLevel@ and @extent.depth@ specified in
 --     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created,
 --     according to the formula defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01761# If @image@ was created with
 --     the
@@ -858,10 +858,10 @@
 --     flag, but without the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT'
 --     flag, and if the @format@ of the @image@ is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 --     format, @format@ /must/ be compatible with the @format@ used to
 --     create @image@, as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility-classes Format Compatibility Classes>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01583# If @image@ was created with
 --     the
@@ -895,7 +895,7 @@
 --     the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
 --     flag, if the @format@ of the @image@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 --     format, and if @subresourceRange.aspectMask@ is one of
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
@@ -904,20 +904,20 @@
 --     then @format@ /must/ be compatible with the
 --     'Vulkan.Core10.Enums.Format.Format' for the plane of the @image@
 --     @format@ indicated by @subresourceRange.aspectMask@, as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatible-planes>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01762# If @image@ was not created
 --     with the
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_MUTABLE_FORMAT_BIT'
 --     flag, or if the @format@ of the @image@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 --     format and if @subresourceRange.aspectMask@ is
 --     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT',
 --     @format@ /must/ be identical to the @format@ used to create @image@
 --
 -- -   #VUID-VkImageViewCreateInfo-format-06415# If the image @format@ is
 --     one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion formats that require a sampler Y’CBCR conversion>,
 --     then the @pNext@ chain /must/ include a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --     structure with a conversion value other than
@@ -937,7 +937,7 @@
 --     structure with a @conversion@ value other than
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', all members of
 --     @components@ /must/ have the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-01020# If @image@ is non-sparse
 --     then it /must/ be bound completely and contiguously to a single
@@ -945,23 +945,23 @@
 --
 -- -   #VUID-VkImageViewCreateInfo-subResourceRange-01021# @viewType@
 --     /must/ be compatible with the type of @image@ as shown in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-compatibility view type compatibility table>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-compatibility view type compatibility table>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02399# If @image@ has an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,
 --     @format@ /must/ be 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02400# If @image@ has an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,
 --     the @pNext@ chain /must/ include a
 --     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionInfo'
 --     structure with a @conversion@ object created with the same external
 --     format as @image@
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02401# If @image@ has an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>,
 --     all members of @components@ /must/ be the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02086# If @image@ was created with
 --     @usage@ containing
@@ -971,36 +971,36 @@
 --     'Vulkan.Core10.Enums.ImageViewType.IMAGE_VIEW_TYPE_2D_ARRAY'
 --
 -- -   #VUID-VkImageViewCreateInfo-image-02087# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shadingRateImage feature>
 --     is enabled, and If @image@ was created with @usage@ containing
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV',
 --     @format@ /must/ be 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-04550# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is enabled, and the @usage@ for the image view includes
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     then the image view’s
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- -   #VUID-VkImageViewCreateInfo-usage-04551# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is enabled, the @usage@ for the image view includes
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
 --     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-layeredShadingRateAttachments layeredShadingRateAttachments>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-layeredShadingRateAttachments layeredShadingRateAttachments>
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE',
 --     @subresourceRange.layerCount@ /must/ be @1@
 --
 -- -   #VUID-VkImageViewCreateInfo-flags-02572# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapDynamic dynamic fragment density map>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapDynamic dynamic fragment density map>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT'
 --
 -- -   #VUID-VkImageViewCreateInfo-flags-03567# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapDeferred deferred fragment density map>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapDeferred deferred fragment density map>
 --     feature is not enabled, @flags@ /must/ not contain
 --     'Vulkan.Core10.Enums.ImageViewCreateFlagBits.IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT'
 --
@@ -1015,10 +1015,10 @@
 --     and @usage@ containing
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT',
 --     @subresourceRange.layerCount@ /must/ be less than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubsampledArrayLayers ::maxSubsampledArrayLayers>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubsampledArrayLayers ::maxSubsampledArrayLayers>
 --
 -- -   #VUID-VkImageViewCreateInfo-invocationMask-04993# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocationMask feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-invocationMask invocationMask feature>
 --     is enabled, and if @image@ was created with @usage@ containing
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI',
 --     @format@ /must/ be 'Vulkan.Core10.Enums.Format.FORMAT_R8_UINT'
@@ -1121,7 +1121,7 @@
 --     'Vulkan.Extensions.VK_KHR_portability_subset.PhysicalDevicePortabilitySubsetFeaturesKHR'::@imageViewFormatSwizzle@
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE', all elements of
 --     @components@ /must/ have the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466#
 --     If the @VK_KHR_portability_subset@ extension is enabled, and
diff --git a/src/Vulkan/Core10/LayerDiscovery.hs b/src/Vulkan/Core10/LayerDiscovery.hs
--- a/src/Vulkan/Core10/LayerDiscovery.hs
+++ b/src/Vulkan/Core10/LayerDiscovery.hs
@@ -244,7 +244,7 @@
     layerName :: ByteString
   , -- | @specVersion@ is the Vulkan version the layer was written to, encoded as
     -- described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#extendingvulkan-coreversions-versionnumbers>.
     specVersion :: Word32
   , -- | @implementationVersion@ is the version of this layer. It is an integer,
     -- increasing with backward compatible changes.
diff --git a/src/Vulkan/Core10/Memory.hs b/src/Vulkan/Core10/Memory.hs
--- a/src/Vulkan/Core10/Memory.hs
+++ b/src/Vulkan/Core10/Memory.hs
@@ -140,7 +140,7 @@
 -- The maximum number of valid memory allocations that /can/ exist
 -- simultaneously within a 'Vulkan.Core10.Handles.Device' /may/ be
 -- restricted by implementation- or platform-dependent limits. The
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMemoryAllocationCount maxMemoryAllocationCount>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMemoryAllocationCount maxMemoryAllocationCount>
 -- feature describes the number of allocations that /can/ exist
 -- simultaneously before encountering these internal limits.
 --
@@ -228,7 +228,7 @@
 --     created from
 --
 -- -   #VUID-vkAllocateMemory-deviceCoherentMemory-02790# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceCoherentMemory deviceCoherentMemory>
 --     feature is not enabled, @pAllocateInfo->memoryTypeIndex@ /must/ not
 --     identify a memory type supporting
 --     'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD'
@@ -285,7 +285,7 @@
                   -- permitted by the implementation.
                   (MemoryAllocateInfo a)
                -> -- | @pAllocator@ controls host memory allocation as described in the
-                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                   -- chapter.
                   ("allocator" ::: Maybe AllocationCallbacks)
                -> io (DeviceMemory)
@@ -342,7 +342,7 @@
 --
 -- How memory objects are bound to Images and Buffers is described in
 -- detail in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association Resource Memory Association>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-association Resource Memory Association>
 -- section.
 --
 -- If a memory object is mapped at the time it is freed, it is implicitly
@@ -351,7 +351,7 @@
 -- Note
 --
 -- As described
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-unmap-does-not-flush below>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-unmap-does-not-flush below>,
 -- host writes are not implicitly flushed when the memory object is
 -- unmapped, but the implementation /must/ guarantee that writes that have
 -- not been flushed do not affect any other memory.
@@ -393,7 +393,7 @@
            -> -- | @memory@ is the 'Vulkan.Core10.Handles.DeviceMemory' object to be freed.
               DeviceMemory
            -> -- | @pAllocator@ controls host memory allocation as described in the
-              -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+              -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
               -- chapter.
               ("allocator" ::: Maybe AllocationCallbacks)
            -> io ()
@@ -444,7 +444,7 @@
 -- range has completed before the host reads from or writes to that range,
 -- and that any previously submitted command that reads from that range has
 -- completed before the host writes to that region (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-host-writes here>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-host-writes here>
 -- for details on fulfilling such a guarantee). If the device memory was
 -- allocated without the
 -- 'Vulkan.Core10.Enums.MemoryPropertyFlagBits.MEMORY_PROPERTY_HOST_COHERENT_BIT'
@@ -463,7 +463,7 @@
 --
 -- It is important for the application developer to become meticulously
 -- familiar with all of the mechanisms described in the chapter on
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization Synchronization and Cache Control>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization Synchronization and Cache Control>
 -- as they are crucial to maintaining memory access ordering.
 --
 -- == Valid Usage
@@ -635,9 +635,9 @@
 -- ranges described by @pMemoryRanges@ are made available to the host
 -- memory domain, such that they /can/ be made available to the device
 -- memory domain via
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible memory domain operations>
 -- using the 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>.
 --
 -- Within each range described by @pMemoryRanges@, each set of
 -- @nonCoherentAtomSize@ bytes in that range is flushed if any byte in that
@@ -718,7 +718,7 @@
 -- available to the host memory domain using the
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT' and
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access types>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access types>,
 -- are made visible to the host. If a range of non-coherent memory is
 -- written by the host and then invalidated without first being flushed,
 -- its contents are undefined.
@@ -1205,7 +1205,7 @@
 --     structure with @image@ that is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', each bit set in the usage
 --     of @image@ /must/ be listed in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>,
 --     and if there is a corresponding @AHARDWAREBUFFER_USAGE@ bit listed
 --     that bit /must/ be included in the Android hardware buffer’s
 --     @AHardwareBuffer_Desc@::@usage@
@@ -1222,7 +1222,7 @@
 --     includes
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT',
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressCaptureReplay bufferDeviceAddressCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkMemoryAllocateInfo-flags-03331# If
@@ -1230,7 +1230,7 @@
 --     includes
 --     'Vulkan.Core11.Enums.MemoryAllocateFlagBits.MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT',
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkMemoryAllocateInfo-pNext-03332# If the @pNext@ chain
diff --git a/src/Vulkan/Core10/OtherTypes.hs b/src/Vulkan/Core10/OtherTypes.hs
--- a/src/Vulkan/Core10/OtherTypes.hs
+++ b/src/Vulkan/Core10/OtherTypes.hs
@@ -72,15 +72,15 @@
 -- = Description
 --
 -- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>
 -- specified by @srcAccessMask@.
 --
 -- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
 -- specified by @dstAccessMask@.
 --
 -- == Valid Usage (Implicit)
@@ -95,7 +95,7 @@
 data MemoryBarrier = MemoryBarrier
   { -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
     --
     -- #VUID-VkMemoryBarrier-srcAccessMask-parameter# @srcAccessMask@ /must/ be
     -- a valid combination of
@@ -103,7 +103,7 @@
     srcAccessMask :: AccessFlags
   , -- | @dstAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
     --
     -- #VUID-VkMemoryBarrier-dstAccessMask-parameter# @dstAccessMask@ /must/ be
     -- a valid combination of
@@ -155,20 +155,20 @@
 -- = Description
 --
 -- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to access to memory through the specified buffer range, via
 -- access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>
 -- specified by @srcAccessMask@. If @srcAccessMask@ includes
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT', memory
 -- writes performed by that access type are also made visible, as that
 -- access type is not performed through a resource.
 --
 -- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to access to memory through the specified buffer range, via
 -- access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
 -- specified by @dstAccessMask@. If @dstAccessMask@ includes
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT' or
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT', available
@@ -178,14 +178,14 @@
 -- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and
 -- @srcQueueFamilyIndex@ is equal to the current queue family, then the
 -- memory barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
 -- for the specified buffer range, and the second access scope includes no
 -- access, as if @dstAccessMask@ was @0@.
 --
 -- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and
 -- @dstQueueFamilyIndex@ is equal to the current queue family, then the
 -- memory barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
 -- for the specified buffer range, and the first access scope includes no
 -- access, as if @srcAccessMask@ was @0@.
 --
@@ -231,7 +231,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
 --
 -- -   #VUID-VkBufferMemoryBarrier-synchronization2-03853# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
 --     is not enabled, and @buffer@ was created with a sharing mode of
 --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', at least
 --     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ be
@@ -259,17 +259,17 @@
 data BufferMemoryBarrier = BufferMemoryBarrier
   { -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
     srcAccessMask :: AccessFlags
   , -- | @dstAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
     dstAccessMask :: AccessFlags
   , -- | @srcQueueFamilyIndex@ is the source queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
     srcQueueFamilyIndex :: Word32
   , -- | @dstQueueFamilyIndex@ is the destination queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
     dstQueueFamilyIndex :: Word32
   , -- | @buffer@ is a handle to the buffer whose backing memory is affected by
     -- the barrier.
@@ -351,20 +351,20 @@
 -- = Description
 --
 -- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to access to memory through the specified image subresource
 -- range, via access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>
 -- specified by @srcAccessMask@. If @srcAccessMask@ includes
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT', memory
 -- writes performed by that access type are also made visible, as that
 -- access type is not performed through a resource.
 --
 -- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to access to memory through the specified image subresource
 -- range, via access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
 -- specified by @dstAccessMask@. If @dstAccessMask@ includes
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_WRITE_BIT' or
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_HOST_READ_BIT', available
@@ -374,28 +374,28 @@
 -- If @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, and
 -- @srcQueueFamilyIndex@ is equal to the current queue family, then the
 -- memory barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
 -- for the specified image subresource range, and the second access scope
 -- includes no access, as if @dstAccessMask@ was @0@.
 --
 -- If @dstQueueFamilyIndex@ is not equal to @srcQueueFamilyIndex@, and
 -- @dstQueueFamilyIndex@ is equal to the current queue family, then the
 -- memory barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
 -- for the specified image subresource range, and the first access scope
 -- includes no access, as if @srcAccessMask@ was @0@.
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
 -- is not enabled or @oldLayout@ is not equal to @newLayout@, @oldLayout@
 -- and @newLayout@ define an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
 -- for the specified image subresource range.
 --
 -- Note
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
 -- is enabled, when the old and new layout are equal, the layout values are
 -- ignored - data is preserved no matter what values are specified, or what
 -- layout the image is currently in.
@@ -590,7 +590,7 @@
 --     or @oldLayout@ and @newLayout@ define an
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
 --     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL',
 --     @image@ /must/ have been created with
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
 --     or
@@ -602,7 +602,7 @@
 --     or @oldLayout@ and @newLayout@ define an
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
 --     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL',
 --     @image@ /must/ have been created with at least one of
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
@@ -681,7 +681,7 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
 --
 -- -   #VUID-VkImageMemoryBarrier-synchronization2-03857# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2 feature>
 --     is not enabled, and @image@ was created with a sharing mode of
 --     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT', at least
 --     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ be
@@ -727,28 +727,28 @@
     next :: Chain es
   , -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
     srcAccessMask :: AccessFlags
   , -- | @dstAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
     dstAccessMask :: AccessFlags
   , -- | @oldLayout@ is the old layout in an
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
     oldLayout :: ImageLayout
   , -- | @newLayout@ is the new layout in an
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
     newLayout :: ImageLayout
   , -- | @srcQueueFamilyIndex@ is the source queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
     srcQueueFamilyIndex :: Word32
   , -- | @dstQueueFamilyIndex@ is the destination queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
     dstQueueFamilyIndex :: Word32
   , -- | @image@ is a handle to the image affected by this barrier.
     image :: Image
   , -- | @subresourceRange@ describes the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views image subresource range>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views image subresource range>
     -- within @image@ that is affected by this barrier.
     subresourceRange :: ImageSubresourceRange
   }
@@ -945,10 +945,10 @@
 -- -   #VUID-VkDrawIndirectCommand-None-00500# For a given vertex buffer
 --     binding, any attribute data fetched /must/ be entirely contained
 --     within the corresponding vertex buffer binding, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input>
 --
 -- -   #VUID-VkDrawIndirectCommand-firstInstance-00501# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
 --     feature is not enabled, @firstInstance@ /must/ be @0@
 --
 -- = See Also
@@ -1026,7 +1026,7 @@
 --     buffer binding, any attribute data fetched /must/ be entirely
 --     contained within the corresponding vertex buffer binding, as
 --     described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input>
 --
 -- -   #VUID-VkDrawIndexedIndirectCommand-indexSize-00553# (@indexSize@ ×
 --     (@firstIndex@ + @indexCount@) + @offset@) /must/ be less than or
@@ -1036,7 +1036,7 @@
 --     'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'
 --
 -- -   #VUID-VkDrawIndexedIndirectCommand-firstInstance-00554# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-drawIndirectFirstInstance drawIndirectFirstInstance>
 --     feature is not enabled, @firstInstance@ /must/ be @0@
 --
 -- = See Also
diff --git a/src/Vulkan/Core10/Pass.hs b/src/Vulkan/Core10/Pass.hs
--- a/src/Vulkan/Core10/Pass.hs
+++ b/src/Vulkan/Core10/Pass.hs
@@ -203,7 +203,7 @@
                      -- describing additional information about framebuffer creation.
                      (FramebufferCreateInfo a)
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io (Framebuffer)
@@ -293,7 +293,7 @@
                    -> -- | @framebuffer@ is the handle of the framebuffer to destroy.
                       Framebuffer
                    -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                       -- chapter.
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io ()
@@ -359,7 +359,7 @@
                     -- describing the parameters of the render pass.
                     (RenderPassCreateInfo a)
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io (RenderPass)
@@ -449,7 +449,7 @@
                   -> -- | @renderPass@ is the handle of the render pass to destroy.
                      RenderPass
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io ()
@@ -500,7 +500,7 @@
 -- Subpass dependencies are not affected by the render area, and apply to
 -- the entire image subresources attached to the framebuffer as specified
 -- in the description of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitions automatic layout transitions>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-layout-transitions automatic layout transitions>.
 -- Similarly, pipeline barriers are valid even if their effect extends
 -- outside the render area.
 --
@@ -600,9 +600,9 @@
 -- to the format of the attachment, before they are resolved or stored at
 -- the end of a render pass instance via @storeOp@. Conversions occur as
 -- described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-numerics Numeric Representation and Computation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-numerics Numeric Representation and Computation>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-fixedconv Fixed-Point Data Conversions>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-fixedconv Fixed-Point Data Conversions>.
 --
 -- If @flags@ includes
 -- 'Vulkan.Core10.Enums.AttachmentDescriptionFlagBits.ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT',
@@ -650,7 +650,7 @@
 -- color or depth\/stencil attachments nor as resolve or preserve
 -- attachments. The precise set of valid scenarios is described in more
 -- detail
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop below>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-feedbackloop below>.
 --
 -- If a set of attachments alias each other, then all except the first to
 -- be used in the render pass /must/ use an @initialLayout@ of
@@ -712,7 +712,7 @@
 --
 -- -   #VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
 --     feature is not enabled, @initialLayout@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
@@ -722,7 +722,7 @@
 --
 -- -   #VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
 --     feature is not enabled, @finalLayout@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
@@ -1031,7 +1031,7 @@
 -- attachment at the fragment’s (x, y, layer) framebuffer coordinates.
 -- Input attachments /must/ not be used by any subpasses within a render
 -- pass that enables
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
 --
 -- Each element of the @pColorAttachments@ array corresponds to an output
 -- location in the shader, i.e. if the shader declares an output variable
@@ -1039,7 +1039,7 @@
 -- provided in @pColorAttachments@[__X__]. If the @attachment@ member of
 -- any element of @pColorAttachments@ is
 -- 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', or if
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-enable Color Write Enable>
 -- has been disabled for the corresponding attachment index, then writes to
 -- the corresponding location by a fragment shader are discarded.
 --
@@ -1175,7 +1175,7 @@
 --     in @pInputAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain at least
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --     or
@@ -1185,7 +1185,7 @@
 --     in @pColorAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1193,7 +1193,7 @@
 --     attachments in @pResolveAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1201,42 +1201,42 @@
 --     @pDepthStencilAttachment@ is not @NULL@ and the attachment is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' then it /must/ have
 --     an image format whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
 -- -   #VUID-VkSubpassDescription-linearColorAttachment-06496# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled and the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', all
 --     attachments in @pInputAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription-linearColorAttachment-06497# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled and the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', all
 --     attachments in @pColorAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription-linearColorAttachment-06498# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled and the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', all
 --     attachments in @pResolveAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription-pColorAttachments-01506# If the
 --     @VK_AMD_mixed_attachment_samples@ extension is enabled, and all
@@ -1269,7 +1269,7 @@
 --
 -- -   #VUID-VkSubpassDescription-None-04437# Each attachment /must/ follow
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#attachment-type-imagelayout image layout requirements>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#attachment-type-imagelayout image layout requirements>
 --     specified for its attachment type
 --
 -- -   #VUID-VkSubpassDescription-flags-00856# If @flags@ includes
@@ -1453,7 +1453,7 @@
 --
 -- If @srcSubpass@ is equal to @dstSubpass@ then the 'SubpassDependency'
 -- describes a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependency>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependency>,
 -- and only constrains the pipeline barriers allowed within a subpass
 -- instance. Otherwise, when a render pass instance which includes a
 -- subpass dependency is submitted to a queue, it defines a memory
@@ -1462,9 +1462,9 @@
 --
 -- If @srcSubpass@ is equal to
 -- 'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', the first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes commands that occur earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
 -- than the 'Vulkan.Core10.CommandBufferBuilding.cmdBeginRenderPass' used
 -- to begin the render pass instance. Otherwise, the first set of commands
 -- includes all commands submitted as part of the subpass instance
@@ -1472,14 +1472,14 @@
 -- operations on attachments used in @srcSubpass@. In either case, the
 -- first synchronization scope is limited to operations on the pipeline
 -- stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
 -- specified by @srcStageMask@.
 --
 -- If @dstSubpass@ is equal to
 -- 'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', the second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
 -- includes commands that occur later in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
 -- than the 'Vulkan.Core10.CommandBufferBuilding.cmdEndRenderPass' used to
 -- end the render pass instance. Otherwise, the second set of commands
 -- includes all commands submitted as part of the subpass instance
@@ -1487,29 +1487,29 @@
 -- operations on attachments used in @dstSubpass@. In either case, the
 -- second synchronization scope is limited to operations on the pipeline
 -- stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
 -- specified by @dstStageMask@.
 --
 -- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to accesses in the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>
 -- specified by @srcStageMask@. It is also limited to access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>
 -- specified by @srcAccessMask@.
 --
 -- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
 -- is limited to accesses in the pipeline stages determined by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
 -- specified by @dstStageMask@. It is also limited to access types in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>
 -- specified by @dstAccessMask@.
 --
 -- The
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-available-and-visible availability and visibility operations>
 -- defined by a subpass dependency affect the execution of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-layout-transitions image layout transitions>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-layout-transitions image layout transitions>
 -- within the render pass.
 --
 -- Note
@@ -1641,28 +1641,28 @@
 -- -   #VUID-VkSubpassDependency-srcSubpass-00867# If @srcSubpass@ is equal
 --     to @dstSubpass@ and not all of the stages in @srcStageMask@ and
 --     @dstStageMask@ are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
 --     pipeline stage in @srcStageMask@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
 --     than or equal to the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earliest>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earliest>
 --     pipeline stage in @dstStageMask@
 --
 -- -   #VUID-VkSubpassDependency-srcAccessMask-00868# Any access flag
 --     included in @srcAccessMask@ /must/ be supported by one of the
 --     pipeline stages in @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
 --
 -- -   #VUID-VkSubpassDependency-dstAccessMask-00869# Any access flag
 --     included in @dstAccessMask@ /must/ be supported by one of the
 --     pipeline stages in @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
 --
 -- -   #VUID-VkSubpassDependency-srcSubpass-02243# If @srcSubpass@ equals
 --     @dstSubpass@, and @srcStageMask@ and @dstStageMask@ both include a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
 --     then @dependencyFlags@ /must/ include
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
 --
@@ -1724,20 +1724,20 @@
   , -- | @srcStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
     srcStageMask :: PipelineStageFlags
   , -- | @dstStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
     dstStageMask :: PipelineStageFlags
   , -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
     srcAccessMask :: AccessFlags
   , -- | @dstAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
     dstAccessMask :: AccessFlags
   , -- | @dependencyFlags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'.
@@ -1930,7 +1930,7 @@
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage flags
 --     included in the @srcStageMask@ member of that dependency /must/ be a
 --     pipeline stage supported by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
 --     identified by the @pipelineBindPoint@ member of the source subpass
 --
 -- -   #VUID-VkRenderPassCreateInfo-pDependencies-00838# For any element of
@@ -1938,7 +1938,7 @@
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage flags
 --     included in the @dstStageMask@ member of that dependency /must/ be a
 --     pipeline stage supported by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
 --     identified by the @pipelineBindPoint@ member of the destination
 --     subpass
 --
@@ -2092,9 +2092,9 @@
 -- Other than the exceptions listed below, applications /must/ ensure that
 -- all accesses to memory that backs image subresources used as attachments
 -- in a given render pass instance either happen-before the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops load operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops load operations>
 -- for those attachments, or happen-after the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops store operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops store operations>
 -- for those attachments.
 --
 -- The exceptions to the general rule are:
@@ -2198,7 +2198,7 @@
 -- -   #VUID-VkFramebufferCreateInfo-renderPass-02553# If @renderpass@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @renderPass@ has a
 --     fragment density map attachment, and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages non-subsample image feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages non-subsample image feature>
 --     is not enabled, each element of @pAttachments@ /must/ have been
 --     created with a @flags@ value including
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
@@ -2206,7 +2206,7 @@
 --
 -- -   #VUID-VkFramebufferCreateInfo-renderPass-06502# If @renderPass@ was
 --     created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density map offsets>
 --     other than (0,0), each element of @pAttachments@ /must/ have been
 --     created with a @flags@ value including
 --     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM'.
@@ -2300,7 +2300,7 @@
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     and @renderPass@ was specified with non-zero view masks, each
 --     element of @pAttachments@ that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     by @renderPass@ /must/ have a @layerCount@ that is either @1@, or
 --     greater than the index of the most significant bit set in any of
 --     those view masks
@@ -2311,7 +2311,7 @@
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     and @renderPass@ was not specified with non-zero view masks, each
 --     element of @pAttachments@ that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     by @renderPass@ /must/ have a @layerCount@ that is either @1@, or
 --     greater than @layers@
 --
@@ -2320,7 +2320,7 @@
 --     include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     an element of @pAttachments@ that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     /must/ have a width at least as large as ⌈@width@ \/ @texelWidth@⌉,
 --     where @texelWidth@ is the largest value of
 --     @shadingRateAttachmentTexelSize.width@ in a
@@ -2332,7 +2332,7 @@
 --     include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     an element of @pAttachments@ that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     /must/ have a height at least as large as ⌈@height@ \/
 --     @texelHeight@⌉, where @texelHeight@ is the largest value of
 --     @shadingRateAttachmentTexelSize.height@ in a
@@ -2356,21 +2356,21 @@
 --
 -- -   #VUID-VkFramebufferCreateInfo-width-00886# @width@ /must/ be less
 --     than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
 --
 -- -   #VUID-VkFramebufferCreateInfo-height-00887# @height@ /must/ be
 --     greater than @0@
 --
 -- -   #VUID-VkFramebufferCreateInfo-height-00888# @height@ /must/ be less
 --     than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
 --
 -- -   #VUID-VkFramebufferCreateInfo-layers-00889# @layers@ /must/ be
 --     greater than @0@
 --
 -- -   #VUID-VkFramebufferCreateInfo-layers-00890# @layers@ /must/ be less
 --     than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferLayers maxFramebufferLayers>
 --
 -- -   #VUID-VkFramebufferCreateInfo-renderPass-02531# If @renderpass@ is
 --     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @renderPass@ was
@@ -2383,7 +2383,7 @@
 --     taken from a 3D image /must/ not be a depth\/stencil format
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-03189# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-imagelessFramebuffer imageless framebuffer>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-imagelessFramebuffer imageless framebuffer>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT'
 --
@@ -2449,7 +2449,7 @@
 --     member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     /must/ be greater than or equal to ⌈@width@ \/ @texelWidth@⌉, where
 --     @texelWidth@ is the largest value of
 --     @shadingRateAttachmentTexelSize.width@ in a
@@ -2463,7 +2463,7 @@
 --     member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     /must/ be greater than or equal to ⌈@height@ \/ @texelHeight@⌉,
 --     where @texelHeight@ is the largest value of
 --     @shadingRateAttachmentTexelSize.height@ in a
@@ -2477,7 +2477,7 @@
 --     @pAttachmentImageInfos@ member of a
 --     'Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer.FramebufferAttachmentsCreateInfo'
 --     structure in the @pNext@ chain that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     /must/ be either @1@, or greater than or equal to @layers@
 --
 -- -   #VUID-VkFramebufferCreateInfo-flags-04587# If @renderpass@ is not
@@ -2485,7 +2485,7 @@
 --     'Vulkan.Core10.Enums.FramebufferCreateFlagBits.FRAMEBUFFER_CREATE_IMAGELESS_BIT',
 --     and @renderPass@ was specified with non-zero view masks, each
 --     element of @pAttachments@ that is used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
 --     by @renderPass@ /must/ have a @layerCount@ that is either @1@, or
 --     greater than the index of the most significant bit set in any of
 --     those view masks
@@ -2631,7 +2631,7 @@
     flags :: FramebufferCreateFlags
   , -- | @renderPass@ is a render pass defining what render passes the
     -- framebuffer will be compatible with. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
     -- for details.
     renderPass :: RenderPass
   , -- | @pAttachments@ is a pointer to an array of
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
@@ -166,7 +166,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_coverage_reduction_mode (PipelineCoverageReductionStateCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_coverage_to_color (PipelineCoverageToColorStateCreateInfoNV)
 import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
 import Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits (PipelineDepthStencilStateCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PipelineDiscardRectangleStateCreateInfoEXT)
 import Vulkan.Core10.Enums.PipelineDynamicStateCreateFlags (PipelineDynamicStateCreateFlags)
@@ -182,11 +182,11 @@
 import Vulkan.Core10.Enums.PipelineRasterizationStateCreateFlags (PipelineRasterizationStateCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_rasterization_order (PipelineRasterizationStateRasterizationOrderAMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PipelineRasterizationStateStreamCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PipelineRenderingCreateInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_representative_fragment_test (PipelineRepresentativeFragmentTestStateCreateInfoNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (PipelineSampleLocationsStateCreateInfoEXT)
 import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PipelineTessellationDomainOriginStateCreateInfo)
 import Vulkan.Core10.Enums.PipelineTessellationStateCreateFlags (PipelineTessellationStateCreateFlags)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_vertex_attribute_divisor (PipelineVertexInputDivisorStateCreateInfoEXT)
@@ -299,15 +299,15 @@
 --
 -- -   #VUID-vkCreateGraphicsPipelines-pipelineCache-02876# If
 --     @pipelineCache@ was created with
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
 --     host access to @pipelineCache@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
 --
 -- Note
 --
 -- An implicit cache may be provided by the implementation or a layer. For
 -- this reason, it is still valid to set
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+-- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 -- on @flags@ for any element of @pCreateInfos@ while passing
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE' for @pipelineCache@.
 --
@@ -347,7 +347,7 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
@@ -369,7 +369,7 @@
                            Device
                         -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
                            -- indicating that pipeline caching is disabled; or the handle of a valid
-                           -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>
+                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>
                            -- object, in which case use of that cache is enabled for the duration of
                            -- the command.
                            PipelineCache
@@ -377,7 +377,7 @@
                            -- structures.
                            ("createInfos" ::: Vector (SomeStruct GraphicsPipelineCreateInfo))
                         -> -- | @pAllocator@ controls host memory allocation as described in the
-                           -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                            -- chapter.
                            ("allocator" ::: Maybe AllocationCallbacks)
                         -> io (Result, ("pipelines" ::: Vector Pipeline))
@@ -438,9 +438,9 @@
 --
 -- -   #VUID-vkCreateComputePipelines-pipelineCache-02873# If
 --     @pipelineCache@ was created with
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
 --     host access to @pipelineCache@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
 --
 -- == Valid Usage (Implicit)
 --
@@ -477,7 +477,7 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
@@ -499,7 +499,7 @@
                           Device
                        -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
                           -- indicating that pipeline caching is disabled; or the handle of a valid
-                          -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>
+                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>
                           -- object, in which case use of that cache is enabled for the duration of
                           -- the command.
                           PipelineCache
@@ -507,7 +507,7 @@
                           -- structures.
                           ("createInfos" ::: Vector (SomeStruct ComputePipelineCreateInfo))
                        -> -- | @pAllocator@ controls host memory allocation as described in the
-                          -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                           -- chapter.
                           ("allocator" ::: Maybe AllocationCallbacks)
                        -> io (Result, ("pipelines" ::: Vector Pipeline))
@@ -597,7 +597,7 @@
                 -> -- | @pipeline@ is the handle of the pipeline to destroy.
                    Pipeline
                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io ()
@@ -647,7 +647,7 @@
 --
 -- If a render pass transform is enabled, the values (px,py) and (ox, oy)
 -- defining the viewport are transformed as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>
 -- before participating in the viewport transform.
 --
 -- The application /can/ specify a negative term for @height@, which has
@@ -657,15 +657,15 @@
 -- viewport instead of the upper left corner. Using the negative @height@
 -- allows the application to avoid having to negate the y component of the
 -- @Position@ output from the last
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
 --
 -- The width and height of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxViewportDimensions implementation-dependent maximum viewport dimensions>
 -- /must/ be greater than or equal to the width and height of the largest
 -- image which /can/ be created and attached to a framebuffer.
 --
 -- The floating-point viewport bounds are represented with an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-viewportSubPixelBits implementation-dependent precision>.
 --
 -- == Valid Usage
 --
@@ -711,6 +711,7 @@
 -- 'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV',
 -- 'PipelineViewportStateCreateInfo',
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdSetViewport',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount',
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
 data Viewport = Viewport
   { -- | @x@ and @y@ are the viewport’s upper left corner (x,y).
@@ -935,24 +936,24 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00704# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometry shaders>
 --     feature is not enabled, @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_GEOMETRY_BIT'
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-00705# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
 --     feature is not enabled, @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_CONTROL_BIT'
 --     or
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TESSELLATION_EVALUATION_BIT'
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02091# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shader>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-meshShader mesh shader>
 --     feature is not enabled, @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02092# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shader>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-taskShader task shader>
 --     feature is not enabled, @stage@ /must/ not be
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
 --
@@ -1020,13 +1021,13 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxGeometryShaderInvocations@
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02596# If @stage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
 --     and the identified entry point writes to @Layer@ for any primitive,
 --     it /must/ write the same value to @Layer@ for all vertices of a
 --     given primitive
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-stage-02597# If @stage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>,
 --     and the identified entry point writes to @ViewportIndex@ for any
 --     primitive, it /must/ write the same value to @ViewportIndex@ for all
 --     vertices of a given primitive
@@ -1065,74 +1066,74 @@
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02784# If @flags@ has
 --     the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
 --     flag set, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02785# If @flags@ has
 --     the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'
 --     flag set, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-computeFullSubgroups computeFullSubgroups>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02754# If a
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
 --     structure is included in the @pNext@ chain, @flags@ /must/ not have
 --     the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
 --     flag set
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02755# If a
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
 --     structure is included in the @pNext@ chain, the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupSizeControl subgroupSizeControl>
 --     feature /must/ be enabled, and @stage@ /must/ be a valid bit
 --     specified in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages requiredSubgroupSizeStages>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages requiredSubgroupSizeStages>
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02756# If a
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
 --     structure is included in the @pNext@ chain and @stage@ is
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT',
 --     the local workgroup size of the shader /must/ be less than or equal
 --     to the product of
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'::@requiredSubgroupSize@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@
 --     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-02757# If a
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
 --     structure is included in the @pNext@ chain, and @flags@ has the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'
 --     flag set, the local workgroup size in the X dimension of the
 --     pipeline /must/ be a multiple of
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'::@requiredSubgroupSize@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'::@requiredSubgroupSize@
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02758# If @flags@ has
 --     both the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'
 --     and
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
 --     flags set, the local workgroup size in the X dimension of the
 --     pipeline /must/ be a multiple of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-flags-02759# If @flags@ has
 --     the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'
 --     flag set and @flags@ does not have the
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
 --     flag set and no
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
 --     structure is included in the @pNext@ chain, the local workgroup size
 --     in the X dimension of the pipeline /must/ be a multiple of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-module-04145# The SPIR-V code
 --     that was used to create @module@ /must/ be valid as described by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>
 --     after applying the specializations provided in
 --     @pSpecializationInfo@, if any, and then converting all
 --     specialization constants into fixed constants
@@ -1144,7 +1145,7 @@
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-pNext-pNext# @pNext@ /must/ be
 --     @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
 --
 -- -   #VUID-VkPipelineShaderStageCreateInfo-sType-unique# The @sType@
 --     value of each struct in the @pNext@ chain /must/ be unique
@@ -1198,7 +1199,7 @@
     name :: ByteString
   , -- | @pSpecializationInfo@ is a pointer to a 'SpecializationInfo' structure,
     -- as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-specialization-constants Specialization Constants>,
     -- or @NULL@.
     specializationInfo :: Maybe SpecializationInfo
   }
@@ -1214,7 +1215,7 @@
   getNext PipelineShaderStageCreateInfo{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PipelineShaderStageCreateInfo e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineShaderStageRequiredSubgroupSizeCreateInfo = Just f
     | otherwise = Nothing
 
 instance (Extendss PipelineShaderStageCreateInfo es, PokeChain es) => ToCStruct (PipelineShaderStageCreateInfo es) where
@@ -1275,7 +1276,7 @@
 --
 -- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
 -- described in more detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
 --
 -- == Valid Usage
 --
@@ -1313,11 +1314,11 @@
 --     the entry point identified by @stage@ and the rest of the state
 --     identified by this structure /must/ adhere to the pipeline linking
 --     rules described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>
 --     chapter
 --
 -- -   #VUID-VkComputePipelineCreateInfo-layout-00703# @layout@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>
 --     with the layout of the compute shader specified in @stage@
 --
 -- -   #VUID-VkComputePipelineCreateInfo-layout-01687# The number of
@@ -1367,11 +1368,11 @@
 --
 -- -   #VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
 --     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 --     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
 --
 -- == Valid Usage (Implicit)
 --
@@ -1382,7 +1383,7 @@
 --     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_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
 --     or
 --     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.SubpassShadingPipelineCreateInfoHUAWEI'
 --
@@ -1446,7 +1447,7 @@
   extends _ f
     | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
     | Just Refl <- eqT @e @SubpassShadingPipelineCreateInfoHUAWEI = Just f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
     | otherwise = Nothing
 
 instance (Extendss ComputePipelineCreateInfo es, PokeChain es) => ToCStruct (ComputePipelineCreateInfo es) where
@@ -1837,7 +1838,7 @@
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY',
 --     and @primitiveRestartEnable@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253# If
@@ -1845,11 +1846,11 @@
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
 --     and @primitiveRestartEnable@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometry shaders>
 --     feature is not enabled, @topology@ /must/ not be any of
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY',
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY',
@@ -1858,7 +1859,7 @@
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY'
 --
 -- -   #VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
 --     feature is not enabled, @topology@ /must/ not be
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
 --
@@ -1911,11 +1912,11 @@
     -- 0xFFFF when @indexType@ is equal to
     -- 'Vulkan.Core10.Enums.IndexType.INDEX_TYPE_UINT16'. Primitive restart is
     -- not allowed for “list” topologies, unless one of the features
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyPatchListRestart primitiveTopologyPatchListRestart>
     -- (for
     -- 'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST')
     -- or
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveTopologyListRestart primitiveTopologyListRestart>
     -- (for all other list topologies) is enabled.
     primitiveRestartEnable :: Bool
   }
@@ -2060,12 +2061,12 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @viewportCount@ /must/ not be greater than
 --     @1@
 --
 -- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @scissorCount@ /must/ not be greater than
 --     @1@
 --
@@ -2091,20 +2092,20 @@
 --
 -- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134# If the
 --     graphics pipeline is being created without
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     set then @scissorCount@ and @viewportCount@ /must/ be identical
 --
 -- -   #VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135# If the
 --     graphics pipeline is being created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     set then @viewportCount@ /must/ be @0@, otherwise it /must/ be
 --     greater than @0@
 --
 -- -   #VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136# If the
 --     graphics pipeline is being created with
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     set then @scissorCount@ /must/ be @0@, otherwise it /must/ be
 --     greater than @0@
 --
@@ -2160,7 +2161,7 @@
     -- is ignored.
     viewports :: Vector Viewport
   , -- | @scissorCount@ is the number of
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-scissor scissors>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-scissor scissors>
     -- and /must/ match the number of viewports.
     scissorCount :: Word32
   , -- | @pScissors@ is a pointer to an array of
@@ -2272,19 +2273,19 @@
 -- 'PipelineRasterizationStateCreateInfo' structure. This structure enables
 -- selecting the rasterization order to use when rendering with the
 -- corresponding graphics pipeline as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-order Rasterization Order>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-order Rasterization Order>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClamp depth clamping>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClamp depth clamping>
 --     feature is not enabled, @depthClampEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fillModeNonSolid non-solid fill modes>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fillModeNonSolid non-solid fill modes>
 --     feature is not enabled, @polygonMode@ /must/ be
 --     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL' or
 --     'Vulkan.Core10.Enums.PolygonMode.POLYGON_MODE_FILL_RECTANGLE_NV'
@@ -2353,12 +2354,12 @@
     flags :: PipelineRasterizationStateCreateFlags
   , -- | @depthClampEnable@ controls whether to clamp the fragment’s depth values
     -- as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth Depth Test>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth Depth Test>.
     -- If the pipeline is not created with
     -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'
     -- present then enabling depth clamp will also disable clipping primitives
     -- to the z planes of the frustrum as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.
     -- Otherwise depth clipping is controlled by the state set in
     -- 'Vulkan.Extensions.VK_EXT_depth_clip_enable.PipelineRasterizationDepthClipStateCreateInfoEXT'.
     depthClampEnable :: Bool
@@ -2482,9 +2483,9 @@
 -- = Description
 --
 -- Each bit in the sample mask is associated with a unique
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
 -- as defined for the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>.
 -- Each bit b for mask word w in the sample mask corresponds to sample
 -- index i, where i = 32 × w + b. @pSampleMask@ has a length equal to ⌈
 -- @rasterizationSamples@ \/ 32 ⌉ words.
@@ -2496,13 +2497,13 @@
 --
 -- -   #VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShading sample rate shading>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sampleRateShading sample rate shading>
 --     feature is not enabled, @sampleShadingEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-alphaToOne alpha to one>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-alphaToOne alpha to one>
 --     feature is not enabled, @alphaToOneEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -2565,24 +2566,24 @@
     -- specifying the number of samples used in rasterization.
     rasterizationSamples :: SampleCountFlagBits
   , -- | @sampleShadingEnable@ /can/ be used to enable
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-sampleshading Sample Shading>.
     sampleShadingEnable :: Bool
   , -- | @minSampleShading@ specifies a minimum fraction of sample shading if
     -- @sampleShadingEnable@ is set to 'Vulkan.Core10.FundamentalTypes.TRUE'.
     minSampleShading :: Float
   , -- | @pSampleMask@ is a pointer to an array of
     -- 'Vulkan.Core10.FundamentalTypes.SampleMask' values used in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-samplemask sample mask test>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-samplemask sample mask test>.
     sampleMask :: Vector SampleMask
   , -- | @alphaToCoverageEnable@ controls whether a temporary coverage value is
     -- generated based on the alpha component of the fragment’s first color
     -- output as specified in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covg Multisample Coverage>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>
     -- section.
     alphaToCoverageEnable :: Bool
   , -- | @alphaToOneEnable@ controls whether the alpha component of the
     -- fragment’s first color output is replaced with one as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-covg Multisample Coverage>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-covg Multisample Coverage>.
     alphaToOneEnable :: Bool
   }
   deriving (Typeable)
@@ -2678,7 +2679,7 @@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
 --     feature is not enabled, @srcColorBlendFactor@ /must/ not be
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',
@@ -2687,7 +2688,7 @@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
 --     feature is not enabled, @dstColorBlendFactor@ /must/ not be
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',
@@ -2696,7 +2697,7 @@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
 --     feature is not enabled, @srcAlphaBlendFactor@ /must/ not be
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',
@@ -2705,7 +2706,7 @@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dualSrcBlend dual source blending>
 --     feature is not enabled, @dstAlphaBlendFactor@ /must/ not be
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_SRC1_COLOR',
 --     'Vulkan.Core10.Enums.BlendFactor.BLEND_FACTOR_ONE_MINUS_SRC1_COLOR',
@@ -2714,21 +2715,21 @@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406# If
 --     either of @colorBlendOp@ or @alphaBlendOp@ is an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
 --     then @colorBlendOp@ /must/ equal @alphaBlendOp@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407#
 --     If
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @colorBlendOp@ is an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
 --     then @colorBlendOp@ /must/ be the same for all attachments
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408#
 --     If
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendIndependentBlend@
 --     is 'Vulkan.Core10.FundamentalTypes.FALSE' and @alphaBlendOp@ is an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
 --     then @alphaBlendOp@ /must/ be the same for all attachments
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409#
@@ -2769,7 +2770,7 @@
 --
 -- -   #VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410# If
 --     @colorBlendOp@ or @alphaBlendOp@ is an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>,
 --     then @colorAttachmentCount@ of the subpass this pipeline is compiled
 --     against /must/ be less than or equal to
 --     'Vulkan.Extensions.VK_EXT_blend_operation_advanced.PhysicalDeviceBlendOperationAdvancedPropertiesEXT'::@advancedBlendMaxColorAttachments@
@@ -2856,7 +2857,7 @@
     -- 'Vulkan.Core10.Enums.ColorComponentFlagBits.ColorComponentFlagBits'
     -- specifying which of the R, G, B, and\/or A components are enabled for
     -- writing, as described for the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>.
     colorWriteMask :: ColorComponentFlags
   }
   deriving (Typeable, Eq)
@@ -2926,13 +2927,13 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-independentBlend independent blending>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-independentBlend independent blending>
 --     feature is not enabled, all elements of @pAttachments@ /must/ be
 --     identical
 --
 -- -   #VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-logicOp logic operations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-logicOp logic operations>
 --     feature is not enabled, @logicOpEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -2942,7 +2943,7 @@
 --
 -- -   #VUID-VkPipelineColorBlendStateCreateInfo-rasterizationOrderColorAttachmentAccess-06465#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rasterizationOrderColorAttachmentAccess rasterizationOrderColorAttachmentAccess>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderColorAttachmentAccess rasterizationOrderColorAttachmentAccess>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM'
 --
@@ -2988,7 +2989,7 @@
     -- specifying additional color blending information.
     flags :: PipelineColorBlendStateCreateFlags
   , -- | @logicOpEnable@ controls whether to apply
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicop Logical Operations>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop Logical Operations>.
     logicOpEnable :: Bool
   , -- | @logicOp@ selects which logical operation to apply.
     logicOp :: LogicOp
@@ -2999,7 +3000,7 @@
   , -- | @blendConstants@ is a pointer to an array of four values used as the R,
     -- G, B, and A components of the blend constant that are used in blending,
     -- depending on the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendfactors blend factor>.
     blendConstants :: (Float, Float, Float, Float)
   }
   deriving (Typeable)
@@ -3277,7 +3278,7 @@
 --
 -- -   #VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthBounds depth bounds testing>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthBounds depth bounds testing>
 --     feature is not enabled, @depthBoundsTestEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -3294,13 +3295,13 @@
 --
 -- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderDepthAttachmentAccess-06463#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rasterizationOrderDepthAttachmentAccess rasterizationOrderDepthAttachmentAccess>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderDepthAttachmentAccess rasterizationOrderDepthAttachmentAccess>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'
 --
 -- -   #VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderStencilAttachmentAccess-06464#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rasterizationOrderStencilAttachmentAccess rasterizationOrderStencilAttachmentAccess>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rasterizationOrderStencilAttachmentAccess rasterizationOrderStencilAttachmentAccess>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM'
 --
@@ -3341,36 +3342,36 @@
     -- specifying additional depth\/stencil state information.
     flags :: PipelineDepthStencilStateCreateFlags
   , -- | @depthTestEnable@ controls whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth testing>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth testing>
     -- is enabled.
     depthTestEnable :: Bool
   , -- | @depthWriteEnable@ controls whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth-write depth writes>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth-write depth writes>
     -- are enabled when @depthTestEnable@ is
     -- 'Vulkan.Core10.FundamentalTypes.TRUE'. Depth writes are always disabled
     -- when @depthTestEnable@ is 'Vulkan.Core10.FundamentalTypes.FALSE'.
     depthWriteEnable :: Bool
   , -- | @depthCompareOp@ is the comparison operator used in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth test>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth test>.
     depthCompareOp :: CompareOp
   , -- | @depthBoundsTestEnable@ controls whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbt depth bounds testing>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds testing>
     -- is enabled.
     depthBoundsTestEnable :: Bool
   , -- | @stencilTestEnable@ controls whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil testing>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil testing>
     -- is enabled.
     stencilTestEnable :: Bool
   , -- | @front@ and @back@ control the parameters of the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil test>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil test>.
     front :: StencilOpState
   , -- No documentation found for Nested "VkPipelineDepthStencilStateCreateInfo" "back"
     back :: StencilOpState
   , -- | @minDepthBounds@ is the minimum depth bound used in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbt depth bounds test>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds test>.
     minDepthBounds :: Float
   , -- | @maxDepthBounds@ is the maximum depth bound used in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-dbt depth bounds test>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-dbt depth bounds test>.
     maxDepthBounds :: Float
   }
   deriving (Typeable)
@@ -3453,18 +3454,18 @@
 --
 -- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
 -- described in more detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
 --
 -- If any shader stage fails to compile, the compile log will be reported
 -- back to the application, and
 -- 'Vulkan.Core10.Enums.Result.ERROR_INVALID_SHADER_NV' will be generated.
 --
 -- The state required for a graphics pipeline is divided into
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output state>.
 --
 -- Vertex input state is defined by:
 --
@@ -3533,20 +3534,20 @@
 -- -   'Vulkan.Core10.Handles.RenderPass' and @subpass@ parameter
 --
 -- A complete graphics pipeline always includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 -- with other subsets included depending on that state. If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 -- includes a vertex shader, then
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>
 -- is included in a complete graphics pipeline. If the value of
 -- 'PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@ in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 -- is 'Vulkan.Core10.FundamentalTypes.FALSE' or the
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 -- dynamic state is enabled
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 -- is included in a complete graphics pipeline.
 --
 -- Pipelines /must/ be created with a complete set of pipeline state.
@@ -3584,7 +3585,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02095# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     the geometric shader stages provided in @pStages@ /must/ be either
 --     from the mesh shading pipeline (@stage@ is
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_TASK_BIT_NV'
@@ -3599,7 +3600,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-stage-02096# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     the @stage@ member of one element of @pStages@ /must/ be either
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_VERTEX_BIT' or
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
@@ -3610,19 +3611,19 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00729# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes a tessellation control shader stage, it
 --     /must/ include a tessellation evaluation shader stage
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00730# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes a tessellation evaluation shader stage, it
 --     /must/ include a tessellation control shader stage
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00731# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes a tessellation control shader stage and a
 --     tessellation evaluation shader stage, @pTessellationState@ /must/ be
 --     a valid pointer to a valid 'PipelineTessellationStateCreateInfo'
@@ -3630,14 +3631,14 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00732# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes tessellation shader stages, the shader code
 --     of at least one stage /must/ contain an @OpExecutionMode@
 --     instruction specifying the type of subdivision in the pipeline
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00733# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes tessellation shader stages, and the shader
 --     code of both stages contain an @OpExecutionMode@ instruction
 --     specifying the type of subdivision in the pipeline, they /must/ both
@@ -3645,14 +3646,14 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00734# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes tessellation shader stages, the shader code
 --     of at least one stage /must/ contain an @OpExecutionMode@
 --     instruction specifying the output patch size in the pipeline
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00735# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes tessellation shader stages, and the shader
 --     code of both contain an @OpExecutionMode@ instruction specifying the
 --     out patch size in the pipeline, they /must/ both specify the same
@@ -3660,44 +3661,44 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00736# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes tessellation shader stages, the @topology@
 --     member of @pInputAssembly@ /must/ be
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-topology-00737# If the pipeline
 --     is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and the @topology@ member of @pInputAssembly@ is
 --     'Vulkan.Core10.Enums.PrimitiveTopology.PRIMITIVE_TOPOLOGY_PATCH_LIST',
 --     @pStages@ /must/ include tessellation shader stages
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00738# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes a geometry shader stage, and does not include
 --     any tessellation shader stages, its shader code /must/ contain an
 --     @OpExecutionMode@ instruction specifying an input primitive type
 --     that is
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution compatible>
 --     with the primitive topology specified in @pInputAssembly@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00739# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @pStages@ includes a geometry shader stage, and also includes
 --     tessellation shader stages, its shader code /must/ contain an
 --     @OpExecutionMode@ instruction specifying an input primitive type
 --     that is
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-geometry-execution compatible>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-geometry-execution compatible>
 --     with the primitive topology that is output by the tessellation
 --     stages
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00740# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     it includes both a fragment shader and a geometry shader, and the
 --     fragment shader code reads from an input variable that is decorated
 --     with @PrimitiveId@, then the geometry shader code /must/ write to a
@@ -3706,7 +3707,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     it includes a mesh shader and the fragment shader code reads from an
 --     input variable that is decorated with @PrimitiveId@, then the mesh
 --     shader code /must/ write to a matching output variable, decorated
@@ -3715,37 +3716,37 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06038# If @renderPass@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     the fragment shader /must/ not read from any input attachment that
 --     is defined as 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' in
 --     @subpass@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-00742# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and multiple pre-rasterization shader stages are included in
 --     @pStages@, the shader code for the entry points identified by those
 --     @pStages@ and the rest of the state identified by this structure
 --     /must/ adhere to the pipeline linking rules described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>
 --     chapter
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-None-04889# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     the fragment shader and last
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 --     and any relevant state /must/ adhere to the pipeline linking rules
 --     described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces Shader Interfaces>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces Shader Interfaces>
 --     chapter
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06039# If @renderPass@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with
 --     a read-only layout for the depth aspect in the
 --     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the
@@ -3755,7 +3756,7 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06040# If @renderPass@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and @subpass@ uses a depth\/stencil attachment in @renderPass@ with
 --     a read-only layout for the stencil aspect in the
 --     'Vulkan.Core10.Pass.AttachmentReference' defined by @subpass@, the
@@ -3766,9 +3767,9 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06041# If @renderPass@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
 --     then for each color attachment in the subpass, if the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the format of the corresponding attachment description do not
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
@@ -3779,34 +3780,34 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06042# If @renderPass@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
 --     and the subpass uses color attachments, the @attachmentCount@ member
 --     of @pColorBlendState@ /must/ be equal to the @colorAttachmentCount@
 --     used to create @subpass@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',
 --     the @pViewports@ member of @pViewportState@ /must/ be a valid
 --     pointer to an array of @pViewportState->viewportCount@ valid
 --     'Viewport' structures
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT',
 --     the @pScissors@ member of @pViewportState@ /must/ be a valid pointer
 --     to an array of @pViewportState->scissorCount@
 --     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the wide lines feature is not enabled, and no element of the
 --     @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LINE_WIDTH', the
@@ -3814,29 +3815,29 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750# If
 --     the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the @rasterizerDiscardEnable@ member of @pRasterizationState@ is
 --     'Vulkan.Core10.FundamentalTypes.FALSE', @pViewportState@ /must/ be a
 --     valid pointer to a valid 'PipelineViewportStateCreateInfo' structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pViewportState-04892# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled, @pViewportState@ /must/ be a valid pointer to
 --     a valid 'PipelineViewportStateCreateInfo' structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751# If
 --     the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     @pMultisampleState@ /must/ be a valid pointer to a valid
 --     'PipelineMultisampleStateCreateInfo' structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06043# If @renderPass@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and @subpass@ uses a depth\/stencil attachment, @pDepthStencilState@
 --     /must/ be a valid pointer to a valid
 --     'PipelineDepthStencilStateCreateInfo' structure
@@ -3844,14 +3845,14 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06044# If @renderPass@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
 --     and @subpass@ uses color attachments, @pColorBlendState@ /must/ be a
 --     valid pointer to a valid 'PipelineColorBlendStateCreateInfo'
 --     structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     the depth bias clamping feature is not enabled, no element of the
 --     @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS', and the
@@ -3861,7 +3862,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the @VK_EXT_depth_range_unrestricted@ extension is not enabled
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS', and
@@ -3872,7 +3873,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',
 --     and the @sampleLocationsEnable@ member of a
@@ -3888,7 +3889,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',
 --     and the @sampleLocationsEnable@ member of a
@@ -3904,7 +3905,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT',
 --     and the @sampleLocationsEnable@ member of a
@@ -3916,7 +3917,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524# If
 --     the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the @sampleLocationsEnable@ member of a
 --     'Vulkan.Extensions.VK_EXT_sample_locations.PipelineSampleLocationsStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pMultisampleState@ is
@@ -3925,12 +3926,12 @@
 --     @InterpolateAtSample@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-layout-00756# @layout@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-pipelinelayout-consistency consistent>
 --     with all shaders specified in @pStages@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00757# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and neither the @VK_AMD_mixed_attachment_samples@ nor the
 --     @VK_NV_framebuffer_mixed_samples@ extensions are enabled, and if
 --     @subpass@ uses color and\/or depth\/stencil attachments, then the
@@ -3939,7 +3940,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01505# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the @VK_AMD_mixed_attachment_samples@ extension is enabled, and
 --     if @subpass@ uses color and\/or depth\/stencil attachments, then the
 --     @rasterizationSamples@ member of @pMultisampleState@ /must/ equal
@@ -3947,7 +3948,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01411# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
 --     if @subpass@ has a depth\/stencil attachment and depth test, stencil
 --     test, or depth bounds test are enabled, then the
@@ -3956,7 +3957,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-01412# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the @VK_NV_framebuffer_mixed_samples@ extension is enabled, and
 --     if @subpass@ has any color attachments, then the
 --     @rasterizationSamples@ member of @pMultisampleState@ /must/ be
@@ -3965,7 +3966,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722# If
 --     the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the @VK_NV_coverage_reduction_mode@ extension is enabled, the
 --     coverage reduction mode specified by
 --     'Vulkan.Extensions.VK_NV_coverage_reduction_mode.PipelineCoverageReductionStateCreateInfoNV'::@coverageReductionMode@,
@@ -3976,11 +3977,11 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-subpass-00758# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and @subpass@ does not use any color and\/or depth\/stencil
 --     attachments, then the @rasterizationSamples@ member of
 --     @pMultisampleState@ /must/ follow the rules for a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-noattachments zero-attachment subpass>
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06046# If @renderPass@
 --     is a valid renderPass, @subpass@ /must/ be a valid subpass within
@@ -3988,7 +3989,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06047# If @renderPass@
 --     is a valid renderPass, the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the @renderPass@ has multiview enabled and @subpass@ has more
 --     than one bit set in the view mask and @multiviewTessellationShader@
 --     is not enabled, then @pStages@ /must/ not include tessellation
@@ -3996,21 +3997,21 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06048# If @renderPass@
 --     is a valid renderPass, the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the @renderPass@ has multiview enabled and @subpass@ has more
 --     than one bit set in the view mask and @multiviewGeometryShader@ is
 --     not enabled, then @pStages@ /must/ not include a geometry shader
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06049# If @renderPass@
 --     is a valid renderPass, the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the @renderPass@ has multiview enabled and @subpass@ has more
 --     than one bit set in the view mask, shaders in the pipeline /must/
 --     not write to the @Layer@ built-in output
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06050# If @renderPass@
 --     is a valid renderPass and the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the @renderPass@ has multiview enabled, then all shaders /must/
 --     not include variables decorated with the @Layer@ built-in decoration
 --     in their interfaces
@@ -4022,7 +4023,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-01565# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and an input attachment was referenced by an @aspectMask@ at
 --     @renderPass@ creation time, the fragment shader /must/ only read
 --     from the aspects that were specified for that input attachment
@@ -4034,7 +4035,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV',
 --     and the @viewportWScalingEnable@ member of a
@@ -4051,7 +4052,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV',
 --     and if @pViewportState->pNext@ chain includes a
@@ -4063,7 +4064,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV',
 --     and if @pViewportState->pNext@ chain includes a
@@ -4075,7 +4076,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and no element of the @pDynamicStates@ member of @pDynamicState@ is
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
 --     and if @pNext@ chain includes a
@@ -4087,26 +4088,26 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02098# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-vertex-input vertex input state>,
 --     @pInputAssemblyState@ /must/ be a valid pointer to a valid
 --     'PipelineInputAssemblyStateCreateInfo' structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02317# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     the @Xfb@ execution mode /can/ be specified by no more than one
 --     shader stage in @pStages@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-02318# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and any shader stage in @pStages@ specifies @Xfb@ execution mode it
 --     /must/ be the last
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and a
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
 --     value other than zero is specified, all variables in the output
@@ -4117,7 +4118,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PipelineRasterizationStateStreamCreateInfoEXT'::@rasterizationStream@
 --     is zero, or not specified, all variables in the output interface of
@@ -4128,9 +4129,9 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the last
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 --     is a geometry shader, and that geometry shader uses the
 --     @GeometryStreams@ capability, then
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackFeaturesEXT'::@geometryStreams@
@@ -4138,17 +4139,17 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-None-02322# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and there are any mesh shader stages in the pipeline there /must/
 --     not be any shader stage in the pipeline with a @Xfb@ execution mode
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766# If
 --     the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and at least one of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     the @lineRasterizationMode@ member of a
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'
 --     structure included in the @pNext@ chain of @pRasterizationState@ is
@@ -4161,7 +4162,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     the @stippledLineEnable@ member of
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PipelineRasterizationLineStateCreateInfoEXT'
 --     is 'Vulkan.Core10.FundamentalTypes.TRUE', and no element of the
@@ -4208,73 +4209,73 @@
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
 --     feature is not enabled, there /must/ be no element of the
 --     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT',
---     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE',
+--     or 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     is included in the @pDynamicStates@ array then @viewportCount@
 --     /must/ be zero
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     is included in the @pDynamicStates@ array then @scissorCount@ /must/
 --     be zero
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     is included in the @pDynamicStates@ array then
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' /must/ not
 --     be present
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     is included in the @pDynamicStates@ array then
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR' /must/ not
 --     be present
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
 --     feature is not enabled, there /must/ be no element of the
 --     @pDynamicStates@ member of @pDynamicState@ set to
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT',
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE',
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE',
 --     or
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>
 --     feature is not enabled, there /must/ be no element of the
 --     @pDynamicStates@ member of @pDynamicState@ set to
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>
 --     feature is not enabled, there /must/ be no element of the
 --     @pDynamicStates@ member of @pDynamicState@ set to
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
@@ -4282,29 +4283,29 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02877# If @flags@ includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
 --     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-02966# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and @flags@ includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV',
 --     then all stages /must/ not specify @Xfb@ execution mode
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
 --     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 --     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@,
@@ -4313,9 +4314,9 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@,
@@ -4324,9 +4325,9 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@,
@@ -4335,9 +4336,9 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@,
@@ -4346,9 +4347,9 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@,
@@ -4357,9 +4358,9 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@,
@@ -4368,13 +4369,13 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@fragmentSize.width@
 --     and
@@ -4383,13 +4384,13 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[0]
 --     /must/ be
@@ -4397,13 +4398,13 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR'::@combinerOps@[1]
 --     /must/ be
@@ -4411,11 +4412,11 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503#
 --     If the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported,
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     is not included in @pDynamicState->pDynamicStates@, and
 --     'PipelineViewportStateCreateInfo'::@viewportCount@ is greater than
 --     @1@, entry points specified in @pStages@ /must/ not write to the
@@ -4423,29 +4424,29 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504#
 --     If the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, and entry points specified in @pStages@
 --     write to the @ViewportIndex@ built-in, they /must/ not also write to
 --     the @PrimitiveShadingRateKHR@ built-in
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505#
 --     If the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, and entry points specified in @pStages@
 --     write to the @ViewportMaskNV@ built-in, they /must/ not also write
 --     to the @PrimitiveShadingRateKHR@ built-in
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506#
 --     If the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>
 --     limit is not supported, and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, elements of
@@ -4457,13 +4458,13 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRateType@
 --     /must/ be equal to
@@ -4471,13 +4472,13 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
 --     /must/ be equal to
@@ -4485,13 +4486,13 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[0]
 --     /must/ be
@@ -4499,13 +4500,13 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@combinerOps@[1]
 --     /must/ be
@@ -4513,11 +4514,11 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573#
 --     If the pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentShadingRateNonTrivialCombinerOps>
 --     limit is not supported and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR'
 --     is not included in @pDynamicState->pDynamicStates@, elements of
@@ -4529,11 +4530,11 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-None-04574# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
 --     /must/ not be equal to
@@ -4545,11 +4546,11 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-None-04575# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates feature>
 --     is not enabled,
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV'::@shadingRate@
 --     /must/ not be equal to
@@ -4562,19 +4563,19 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807# If the
 --     pipeline is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>
 --     and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
 --     feature is not enabled, there /must/ be no element of the
 --     @pDynamicStates@ member of @pDynamicState@ set to
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-None-04893# The pipeline /must/
 --     be created with a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-complete complete set of state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-complete complete set of state>
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
 --     feature is not enabled, there /must/ be no element of the
 --     @pDynamicStates@ member of @pDynamicState@ set to
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT'
@@ -4606,18 +4607,18 @@
 --     attachment /must/ be 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06052# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>
 --     feature is not enabled, @renderPass@ /must/ not be
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06053# If @renderPass@
 --     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
 --     created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>,
 --     and either of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::depthAttachmentFormat
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::depthAttachmentFormat
 --     or
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::stencilAttachmentFormat
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::stencilAttachmentFormat
 --     are not 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
 --     @pDepthStencilState@ /must/ be a valid pointer to a valid
 --     'PipelineDepthStencilStateCreateInfo' structure
@@ -4625,82 +4626,82 @@
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06054# If @renderPass@
 --     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
 --     created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::colorAttachmentCount
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::colorAttachmentCount
 --     is not equal to @0@, @pColorBlendState@ /must/ be a valid pointer to
 --     a valid 'PipelineColorBlendStateCreateInfo' structure
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06055# If @renderPass@
 --     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>,
 --     @pColorBlendState->attachmentCount@ /must/ be equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::colorAttachmentCount
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::colorAttachmentCount
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06056# If @renderPass@
 --     is 'Vulkan.Core10.APIConstants.NULL_HANDLE' and the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     the fragment shader /must/ not read from any input attachment
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06057# If @renderPass@
 --     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
 --     created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     the @viewMask@ member of a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
 --     structure included in the @pNext@ chain is not @0@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-tess multiviewTessellationShader>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-tess multiviewTessellationShader>
 --     feature is not enabled, then @pStages@ /must/ not include
 --     tessellation shaders
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06058# If @renderPass@
 --     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
 --     created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     the @viewMask@ member of a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
 --     structure included in the @pNext@ chain is not @0@, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-gs multiviewGeometryShader>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-gs multiviewGeometryShader>
 --     feature is not enabled, then @pStages@ /must/ not include a geometry
 --     shader
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06059# If @renderPass@
 --     is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the pipeline is being
 --     created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader state>,
 --     and the @viewMask@ member of a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
 --     structure included in the @pNext@ chain is not @0@, shaders in
 --     @pStages@ /must/ not include variables decorated with the @Layer@
 --     built-in decoration in their interfaces
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06060# If the pipeline
 --     is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     @pColorBlendState->attachmentCount@ /must/ be equal to the
 --     @colorAttachmentCount@ member of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'
 --     structure included in the @pNext@ chain
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06061# If the pipeline
 --     is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-shader fragment shader state>
 --     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     fragment shaders in @pStages@ /must/ not include the
 --     @InputAttachment@ capability
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06062# If the pipeline
 --     is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', for
 --     each color attachment format defined by the
 --     @pColorAttachmentFormats@ member of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
 --     if its
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     do not contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT',
 --     then the @blendEnable@ member of the corresponding element of the
@@ -4709,7 +4710,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-renderPass-06063# If the pipeline
 --     is being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and @renderPass@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', if the
 --     @pNext@ chain includes
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -4717,12 +4718,12 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV',
 --     the @colorAttachmentCount@ member of that structure /must/ be equal
 --     to the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-pStages-06466# If @pStages@
 --     includes a fragment shader stage, and the fragment shader code
 --     enables
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>,
 --     the @flags@ member of 'PipelineDepthStencilStateCreateInfo' /must/
 --     not include
 --     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'
@@ -4731,7 +4732,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06482# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and the @flags@ member of 'PipelineColorBlendStateCreateInfo'
 --     includes
 --     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM',
@@ -4739,7 +4740,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06483# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'
 --     includes
 --     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM'
@@ -4749,7 +4750,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06484# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and the @flags@ member of 'PipelineColorBlendStateCreateInfo'
 --     includes
 --     'Vulkan.Core10.Enums.PipelineColorBlendStateCreateFlagBits.PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM'
@@ -4758,7 +4759,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06485# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'
 --     includes
 --     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM',
@@ -4767,7 +4768,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineCreateInfo-flags-06486# If the pipeline is
 --     being created with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-fragment-output fragment output interface state>
 --     and the @flags@ member of 'PipelineDepthStencilStateCreateInfo'
 --     includes
 --     'Vulkan.Core10.Enums.PipelineDepthStencilStateCreateFlagBits.PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM',
@@ -4786,11 +4787,11 @@
 --     'Vulkan.Extensions.VK_NV_device_generated_commands.GraphicsPipelineShaderGroupsCreateInfoNV',
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX',
 --     'Vulkan.Extensions.VK_AMD_pipeline_compiler_control.PipelineCompilerControlCreateInfoAMD',
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
 --     'Vulkan.Extensions.VK_EXT_discard_rectangles.PipelineDiscardRectangleStateCreateInfoEXT',
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PipelineFragmentShadingRateEnumStateCreateInfoNV',
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PipelineFragmentShadingRateStateCreateInfoKHR',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo',
 --     or
 --     'Vulkan.Extensions.VK_NV_representative_fragment_test.PipelineRepresentativeFragmentTestStateCreateInfoNV'
 --
@@ -4866,7 +4867,7 @@
   , -- | @pInputAssemblyState@ is a pointer to a
     -- 'PipelineInputAssemblyStateCreateInfo' structure which determines input
     -- assembly behavior, as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing Drawing Commands>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing Drawing Commands>.
     -- It is ignored if the pipeline includes a mesh shader stage.
     inputAssemblyState :: Maybe PipelineInputAssemblyStateCreateInfo
   , -- | @pTessellationState@ is a pointer to a
@@ -4906,7 +4907,7 @@
     -- environment in which the pipeline will be used. The pipeline /must/ only
     -- be used with a render pass instance compatible with the one provided.
     -- See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
     -- for more information.
     renderPass :: RenderPass
   , -- | @subpass@ is the index of the subpass in the render pass where this
@@ -4932,11 +4933,11 @@
   extends _ f
     | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
     | Just Refl <- eqT @e @AttachmentSampleCountInfoAMD = Just f
-    | Just Refl <- eqT @e @PipelineRenderingCreateInfoKHR = Just f
+    | Just Refl <- eqT @e @PipelineRenderingCreateInfo = Just f
     | Just Refl <- eqT @e @PipelineFragmentShadingRateEnumStateCreateInfoNV = Just f
     | Just Refl <- eqT @e @PipelineFragmentShadingRateStateCreateInfoKHR = Just f
     | Just Refl <- eqT @e @PipelineCompilerControlCreateInfoAMD = Just f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
     | Just Refl <- eqT @e @PipelineRepresentativeFragmentTestStateCreateInfoNV = Just f
     | Just Refl <- eqT @e @PipelineDiscardRectangleStateCreateInfoEXT = Just f
     | Just Refl <- eqT @e @GraphicsPipelineShaderGroupsCreateInfoNV = Just f
diff --git a/src/Vulkan/Core10/PipelineCache.hs b/src/Vulkan/Core10/PipelineCache.hs
--- a/src/Vulkan/Core10/PipelineCache.hs
+++ b/src/Vulkan/Core10/PipelineCache.hs
@@ -112,9 +112,9 @@
 -- multiple threads simultaneously.
 --
 -- If @flags@ of @pCreateInfo@ includes
--- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',
+-- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
 -- all commands that modify the returned pipeline cache object /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
 --
 -- Note
 --
@@ -166,7 +166,7 @@
                        -- containing initial parameters for the pipeline cache object.
                        PipelineCacheCreateInfo
                     -> -- | @pAllocator@ controls host memory allocation as described in the
-                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                       -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                        -- chapter.
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io (PipelineCache)
@@ -254,7 +254,7 @@
                      -> -- | @pipelineCache@ is the handle of the pipeline cache to destroy.
                         PipelineCache
                      -> -- | @pAllocator@ controls host memory allocation as described in the
-                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                         -- chapter.
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io ()
@@ -302,7 +302,7 @@
 --
 -- The initial bytes written to @pData@ /must/ be a header as described in
 -- the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache-header Pipeline Cache Header>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache-header Pipeline Cache Header>
 -- section.
 --
 -- If @pDataSize@ is less than what is necessary to store this header,
@@ -473,9 +473,9 @@
 --
 -- -   #VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
 --     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT'
 --
 -- == Valid Usage (Implicit)
 --
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
@@ -118,7 +118,7 @@
                         -- specifying the state of the pipeline layout object.
                         PipelineLayoutCreateInfo
                      -> -- | @pAllocator@ controls host memory allocation as described in the
-                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                         -- chapter.
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (PipelineLayout)
@@ -175,7 +175,7 @@
 -- -   #VUID-vkDestroyPipelineLayout-pipelineLayout-02004# @pipelineLayout@
 --     /must/ not have been passed to any @vkCmd*@ command for any command
 --     buffers that are still in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
 --     when 'destroyPipelineLayout' is called
 --
 -- == Valid Usage (Implicit)
@@ -212,7 +212,7 @@
                       -> -- | @pipelineLayout@ is the pipeline layout to destroy.
                          PipelineLayout
                       -> -- | @pAllocator@ controls host memory allocation as described in the
-                         -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                         -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                          -- chapter.
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io ()
@@ -391,10 +391,10 @@
 --     number of bindings in descriptor set layouts created without the
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
 --     bit set with a @descriptorType@ of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     accessible to any given shader stage across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxPerStageDescriptorInlineUniformBlocks@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxPerStageDescriptorInlineUniformBlocks@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03022# The total
 --     number of descriptors with a @descriptorType@ of
@@ -450,10 +450,10 @@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02215# The total
 --     number of bindings with a @descriptorType@ of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     accessible to any given shader stage across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-03028# The total
 --     number of descriptors in descriptor set layouts created without the
@@ -537,10 +537,10 @@
 --     number of bindings in descriptor set layouts created without the
 --     'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
 --     bit set with a @descriptorType@ of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxDescriptorSetInlineUniformBlocks@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxDescriptorSetInlineUniformBlocks@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036# The total number
 --     of descriptors of the type
@@ -606,10 +606,10 @@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-descriptorType-02217# The total
 --     number of bindings with a @descriptorType@ of
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     accessible across all shader stages and across all elements of
 --     @pSetLayouts@ /must/ be less than or equal to
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT'::@maxDescriptorSetUpdateAfterBindInlineUniformBlocks@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'::@maxDescriptorSetUpdateAfterBindInlineUniformBlocks@
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292# Any two
 --     elements of @pPushConstantRanges@ /must/ not include the same stage
@@ -667,7 +667,7 @@
 --     'Vulkan.Core10.Enums.SamplerCreateFlagBits.SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT'
 --     across all shader stages and across all elements of @pSetLayouts@
 --     /must/ be less than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxDescriptorSetSubsampledSamplers ::maxDescriptorSetSubsampledSamplers>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxDescriptorSetSubsampledSamplers ::maxDescriptorSetSubsampledSamplers>
 --
 -- -   #VUID-VkPipelineLayoutCreateInfo-pSetLayouts-04606# Any element of
 --     @pSetLayouts@ /must/ not have been created with the
diff --git a/src/Vulkan/Core10/Query.hs b/src/Vulkan/Core10/Query.hs
--- a/src/Vulkan/Core10/Query.hs
+++ b/src/Vulkan/Core10/Query.hs
@@ -144,7 +144,7 @@
                    -- containing the number and type of queries to be managed by the pool.
                    (QueryPoolCreateInfo a)
                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io (QueryPool)
@@ -241,7 +241,7 @@
                  -> -- | @queryPool@ is the query pool to destroy.
                     QueryPool
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io ()
@@ -278,7 +278,7 @@
 -- available state, results are written as an array of 32-bit unsigned
 -- integer values. The behavior when not all queries are available, is
 -- described
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-wait-bit-not-set below>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-wait-bit-not-set below>.
 --
 -- If 'Vulkan.Core10.Enums.QueryResultFlagBits.QUERY_RESULT_64_BIT' is not
 -- set and the result overflows a 32-bit value, the value /may/ either wrap
@@ -403,7 +403,7 @@
 --
 -- -   #VUID-vkGetQueryPoolResults-dataSize-00817# @dataSize@ /must/ be
 --     large enough to contain the result of each query, as described
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-memorylayout here>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-memorylayout here>
 --
 -- -   #VUID-vkGetQueryPoolResults-queryType-00818# If the @queryType@ used
 --     to create @queryPool@ was
@@ -515,7 +515,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkQueryPoolCreateInfo-queryType-00791# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineStatisticsQuery pipeline statistics queries>
 --     feature is not enabled, @queryType@ /must/ not be
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PIPELINE_STATISTICS'
 --
@@ -580,7 +580,7 @@
     -- 'Vulkan.Core10.Enums.QueryPipelineStatisticFlagBits.QueryPipelineStatisticFlagBits'
     -- specifying which counters will be returned in queries on the new pool,
     -- as described below in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-pipestats>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-pipestats>.
     pipelineStatistics :: QueryPipelineStatisticFlags
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core10/Queue.hs b/src/Vulkan/Core10/Queue.hs
--- a/src/Vulkan/Core10/Queue.hs
+++ b/src/Vulkan/Core10/Queue.hs
@@ -177,7 +177,7 @@
 -- = Description
 --
 -- 'queueSubmit' is a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
 -- with each batch defined by an element of @pSubmits@. Batches begin
 -- execution in the order they appear in @pSubmits@, but /may/ complete out
 -- of order.
@@ -186,39 +186,39 @@
 -- additional ordering constraints compared to other submission commands,
 -- with dependencies involving previous and subsequent queue operations.
 -- Information about these additional constraints can be found in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores semaphore>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores semaphore>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences fence>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences fence>
 -- sections of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
 --
 -- Details on the interaction of @pWaitDstStageMask@ with synchronization
 -- are described in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
 -- section of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
 --
 -- The order that batches appear in @pSubmits@ is used to determine
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>,
 -- and thus all the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
 -- that respect it. Other than these implicit ordering guarantees and any
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,
 -- these batches /may/ overlap or otherwise execute out of order.
 --
 -- If any command buffer submitted to this queue is in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>,
 -- it is moved to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.
 -- Once execution of all submissions of a command buffer complete, it moves
 -- from the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
 -- back to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
 -- If a command buffer was recorded with the
 -- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT'
 -- flag, it instead moves to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state>.
 --
 -- If 'queueSubmit' fails, it /may/ return
 -- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or
@@ -230,7 +230,7 @@
 -- way that the implementation is unable to make that guarantee, the
 -- implementation /must/ return
 -- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'. See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>.
 --
 -- == Valid Usage
 --
@@ -257,7 +257,7 @@
 --     in any element of the @pWaitDstStageMask@ member of any element of
 --     @pSubmits@ /must/ be a pipeline stage supported by one of the
 --     capabilities of @queue@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-supported table of supported pipeline stages>
 --
 -- -   #VUID-vkQueueSubmit-pSignalSemaphores-00067# Each binary semaphore
 --     element of the @pSignalSemaphores@ member of any element of
@@ -281,28 +281,28 @@
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00070# Each element of the
 --     @pCommandBuffers@ member of each element of @pSubmits@ /must/ be in
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00071# If any element of the
 --     @pCommandBuffers@ member of any element of @pSubmits@ was not
 --     recorded with the
 --     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',
 --     it /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00072# Any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
 --     into any element of the @pCommandBuffers@ member of any element of
 --     @pSubmits@ /must/ be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00073# If any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
 --     into any element of the @pCommandBuffers@ member of any element of
 --     @pSubmits@ was not recorded with the
 --     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',
 --     it /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-00074# Each element of the
 --     @pCommandBuffers@ member of each element of @pSubmits@ /must/ have
@@ -311,13 +311,13 @@
 --
 -- -   #VUID-vkQueueSubmit-pSubmits-02207# If any element of
 --     @pSubmits->pCommandBuffers@ includes a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Transfer Acquire Operation>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Transfer Acquire Operation>,
 --     there /must/ exist a previously submitted
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release Queue Family Transfer Release Operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release Queue Family Transfer Release Operation>
 --     on a queue in the queue family identified by the acquire operation,
 --     with parameters matching the acquire operation as defined in the
 --     definition of such
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,
 --     and which happens-before the acquire operation
 --
 -- -   #VUID-vkQueueSubmit-pCommandBuffers-03220# If a command recorded
@@ -326,7 +326,7 @@
 --     @queryPool@ was created with a @queryType@ of
 --     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#profiling-lock profiling lock>
 --     /must/ have been held continuously on the
 --     'Vulkan.Core10.Handles.Device' that @queue@ was retrieved from,
 --     throughout recording of those command buffers
@@ -412,7 +412,7 @@
             -> -- | @fence@ is an /optional/ handle to a fence to be signaled once all
                -- submitted command buffers have completed execution. If @fence@ is not
                -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it defines a
-               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
+               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
                Fence
             -> io ()
 queueSubmit queue submits fence = liftIO . evalContT $ do
@@ -458,7 +458,7 @@
 --
 -- 'queueWaitIdle' is equivalent to having submitted a valid fence to every
 -- previously executed
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission command>
 -- that accepts a fence, then waiting for all of those fences to signal
 -- using 'Vulkan.Core10.Fence.waitForFences' with an infinite timeout and
 -- @waitAll@ set to 'Vulkan.Core10.FundamentalTypes.TRUE'.
@@ -599,11 +599,11 @@
 --
 -- The order that command buffers appear in @pCommandBuffers@ is used to
 -- determine
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>,
 -- and thus all the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-implicit implicit ordering guarantees>
 -- that respect it. Other than these implicit ordering guarantees and any
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization explicit synchronization primitives>,
 -- these command buffers /may/ overlap or otherwise execute out of order.
 --
 -- == Valid Usage
@@ -696,7 +696,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pSignalSemaphoreValues@
 --     /must/ have a value greater than the current value of the semaphore
 --     when the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 --     is executed
 --
 -- -   #VUID-VkSubmitInfo-pWaitSemaphores-03243# For each element of
@@ -708,7 +708,7 @@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
 -- -   #VUID-VkSubmitInfo-pSignalSemaphores-03244# For each element of
 --     @pSignalSemaphores@ created with a
@@ -719,7 +719,7 @@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
 -- -   #VUID-VkSubmitInfo-pNext-04120# If the @pNext@ chain of this
 --     structure does not include a
@@ -737,33 +737,33 @@
 --
 -- -   #VUID-VkSubmitInfo-pCommandBuffers-06193# If @pCommandBuffers@
 --     contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension resumed render pass instances>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension resumed render pass instances>,
 --     they /must/ be suspended by a render pass instance earlier in
 --     submission order within @pCommandBuffers@
 --
 -- -   #VUID-VkSubmitInfo-pCommandBuffers-06014# If @pCommandBuffers@
 --     contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
 --     they /must/ be resumed by a render pass instance later in submission
 --     order within @pCommandBuffers@
 --
 -- -   #VUID-VkSubmitInfo-pCommandBuffers-06015# If @pCommandBuffers@
 --     contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
 --     there /must/ be no action or synchronization commands between that
 --     render pass instance and the render pass instance that resumes it
 --
 -- -   #VUID-VkSubmitInfo-pCommandBuffers-06016# If @pCommandBuffers@
 --     contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
 --     there /must/ be no render pass instances between that render pass
 --     instance and the render pass instance that resumes it
 --
 -- -   #VUID-VkSubmitInfo-variableSampleLocations-06017# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
 --     limit is not supported, and any element of @pCommandBuffers@
 --     contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
 --     where a graphics pipeline has been bound, any pipelines bound in the
 --     render pass instance that resumes it, or any subsequent render pass
 --     instances that resume from that one and so on, /must/ use the same
@@ -833,7 +833,7 @@
     -- 'Vulkan.Core10.Handles.Semaphore' handles upon which to wait before the
     -- command buffers for this batch begin execution. If semaphores to wait on
     -- are provided, they define a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.
     waitSemaphores :: Vector Semaphore
   , -- | @pWaitDstStageMask@ is a pointer to an array of pipeline stages at which
     -- each corresponding semaphore wait will occur.
@@ -845,7 +845,7 @@
     -- 'Vulkan.Core10.Handles.Semaphore' handles which will be signaled when
     -- the command buffers for this batch have completed execution. If
     -- semaphores to be signaled are provided, they define a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
     signalSemaphores :: Vector Semaphore
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core10/QueueSemaphore.hs b/src/Vulkan/Core10/QueueSemaphore.hs
--- a/src/Vulkan/Core10/QueueSemaphore.hs
+++ b/src/Vulkan/Core10/QueueSemaphore.hs
@@ -123,7 +123,7 @@
                    -- containing information about how the semaphore is to be created.
                    (SemaphoreCreateInfo a)
                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                    -- chapter.
                    ("allocator" ::: Maybe AllocationCallbacks)
                 -> io (Semaphore)
@@ -212,7 +212,7 @@
                  -> -- | @semaphore@ is the handle of the semaphore to destroy.
                     Semaphore
                  -> -- | @pAllocator@ controls host memory allocation as described in the
-                    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                     -- chapter.
                     ("allocator" ::: Maybe AllocationCallbacks)
                  -> io ()
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
@@ -154,7 +154,7 @@
                  -- the state of the sampler object.
                  (SamplerCreateInfo a)
               -> -- | @pAllocator@ controls host memory allocation as described in the
-                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                  -- chapter.
                  ("allocator" ::: Maybe AllocationCallbacks)
               -> io (Sampler)
@@ -243,7 +243,7 @@
                -> -- | @sampler@ is the sampler to destroy.
                   Sampler
                -> -- | @pAllocator@ controls host memory allocation as described in the
-                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                   -- chapter.
                   ("allocator" ::: Maybe AllocationCallbacks)
                -> io ()
@@ -285,7 +285,7 @@
 -- 'Vulkan.Core10.Enums.Filter.FILTER_NEAREST', respectively.
 --
 -- Note that using a @maxLod@ of zero would cause
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-filtering magnification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-filtering magnification>
 -- to always be performed, and the @magFilter@ to always be used. This is
 -- valid, just not an exact match for OpenGL behavior. Clamping the maximum
 -- LOD to 0.25 allows the λ value to be non-zero and minification to be
@@ -295,7 +295,7 @@
 --
 -- The maximum number of sampler objects which /can/ be simultaneously
 -- created on a device is implementation-dependent and specified by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSamplerAllocationCount maxSamplerAllocationCount>
 -- member of the 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'
 -- structure.
 --
@@ -329,7 +329,7 @@
 --     than or equal to @minLod@
 --
 -- -   #VUID-VkSamplerCreateInfo-anisotropyEnable-01070# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerAnisotropy anisotropic sampling>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerAnisotropy anisotropic sampling>
 --     feature is not enabled, @anisotropyEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
@@ -340,9 +340,9 @@
 --     inclusive
 --
 -- -   #VUID-VkSamplerCreateInfo-minFilter-01645# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     is enabled and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the sampler Y′CBCR conversion do not support
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT',
 --     @minFilter@ and @magFilter@ /must/ be equal to the sampler Y′CBCR
@@ -383,7 +383,7 @@
 --     'Vulkan.Core10.Enums.BorderColor.BorderColor' value
 --
 -- -   #VUID-VkSamplerCreateInfo-addressModeU-01646# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     is enabled, @addressModeU@, @addressModeV@, and @addressModeW@
 --     /must/ be
 --     'Vulkan.Core10.Enums.SamplerAddressMode.SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE',
@@ -395,11 +395,11 @@
 --     /must/ be set to
 --     'Vulkan.Core12.Enums.SamplerReductionMode.SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE'
 --     if
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 --     is enabled
 --
 -- -   #VUID-VkSamplerCreateInfo-addressModeU-01079# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerMirrorClampToEdge samplerMirrorClampToEdge>
 --     is not enabled, and if the @VK_KHR_sampler_mirror_clamp_to_edge@
 --     extension is not enabled, @addressModeU@, @addressModeV@ and
 --     @addressModeW@ /must/ not be
@@ -463,7 +463,7 @@
 --     /must/ be included in the @pNext@ chain
 --
 -- -   #VUID-VkSamplerCreateInfo-customBorderColors-04085# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColors customBorderColors>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-customBorderColors customBorderColors>
 --     feature is not enabled, @borderColor@ /must/ not be
 --     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT' or
 --     'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'
@@ -480,7 +480,7 @@
 -- -   #VUID-VkSamplerCreateInfo-None-04012# The maximum number of samplers
 --     with custom border colors which /can/ be simultaneously created on a
 --     device is implementation-dependent and specified by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxCustomBorderColorSamplers maxCustomBorderColorSamplers>
 --     member of the
 --     'Vulkan.Extensions.VK_EXT_custom_border_color.PhysicalDeviceCustomBorderColorPropertiesEXT'
 --     structure
@@ -572,13 +572,13 @@
   , -- | #samplers-mipLodBias# @mipLodBias@ is the bias to be added to mipmap LOD
     -- (level-of-detail) calculation and bias provided by image sampling
     -- functions in SPIR-V, as described in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation Level-of-Detail Operation>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-level-of-detail-operation Level-of-Detail Operation>
     -- section.
     mipLodBias :: Float
   , -- | #samplers-maxAnisotropy# @anisotropyEnable@ is
     -- 'Vulkan.Core10.FundamentalTypes.TRUE' to enable anisotropic filtering,
     -- as described in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-anisotropic-filtering Texel Anisotropic Filtering>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-anisotropic-filtering Texel Anisotropic Filtering>
     -- section, or 'Vulkan.Core10.FundamentalTypes.FALSE' otherwise.
     anisotropyEnable :: Bool
   , -- | @maxAnisotropy@ is the anisotropy value clamp used by the sampler when
@@ -596,14 +596,14 @@
   , -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
     -- specifying the comparison function to apply to fetched data before
     -- filtering as described in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-depth-compare-operation Depth Compare Operation>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-depth-compare-operation Depth Compare Operation>
     -- section.
     compareOp :: CompareOp
   , -- | @minLod@ is used to clamp the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation minimum of the computed LOD value>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-level-of-detail-operation minimum of the computed LOD value>.
     minLod :: Float
   , -- | @maxLod@ is used to clamp the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-level-of-detail-operation maximum of the computed LOD value>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-level-of-detail-operation maximum of the computed LOD value>.
     -- To avoid clamping the maximum value, set @maxLod@ to the constant
     -- 'Vulkan.Core10.APIConstants.LOD_CLAMP_NONE'.
     maxLod :: Float
diff --git a/src/Vulkan/Core10/Shader.hs b/src/Vulkan/Core10/Shader.hs
--- a/src/Vulkan/Core10/Shader.hs
+++ b/src/Vulkan/Core10/Shader.hs
@@ -97,9 +97,9 @@
 --
 -- Once a shader module has been created, any entry points it contains
 -- /can/ be used in pipeline shader stages as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-compute Compute Pipelines>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-compute Compute Pipelines>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-graphics Graphics Pipelines>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-graphics Graphics Pipelines>.
 --
 -- == Valid Usage (Implicit)
 --
@@ -145,7 +145,7 @@
                    -> -- | @pCreateInfo@ is a pointer to a 'ShaderModuleCreateInfo' structure.
                       (ShaderModuleCreateInfo a)
                    -> -- | @pAllocator@ controls host memory allocation as described in the
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                       -- chapter.
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io (ShaderModule)
@@ -238,7 +238,7 @@
                     -> -- | @shaderModule@ is the handle of the shader module to destroy.
                        ShaderModule
                     -> -- | @pAllocator@ controls host memory allocation as described in the
-                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                       -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                        -- chapter.
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io ()
@@ -267,16 +267,16 @@
 --
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-01377# @pCode@ /must/ point to
 --     either valid SPIR-V code, formatted and packed as described by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>
 --     or valid GLSL code which /must/ be written to the
 --     @GL_KHR_vulkan_glsl@ extension specification
 --
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-01378# If @pCode@ is a pointer
 --     to SPIR-V code, that code /must/ adhere to the validation rules
 --     described by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Validation Rules within a Module>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-module-validation Validation Rules within a Module>
 --     section of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment>
 --     appendix
 --
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-01379# If @pCode@ is a pointer
@@ -289,27 +289,27 @@
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-01090# @pCode@ /must/ not
 --     declare any capability that is not supported by the API, as
 --     described by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-module-validation Capabilities>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-module-validation Capabilities>
 --     section of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment>
 --     appendix
 --
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-01091# If @pCode@ declares any
 --     of the capabilities listed in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table SPIR-V Environment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table SPIR-V Environment>
 --     appendix, one of the corresponding requirements /must/ be satisfied
 --
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-04146# @pCode@ /must/ not
 --     declare any SPIR-V extension that is not supported by the API, as
 --     described by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-extensions Extension>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-extensions Extension>
 --     section of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities SPIR-V Environment>
 --     appendix
 --
 -- -   #VUID-VkShaderModuleCreateInfo-pCode-04147# If @pCode@ declares any
 --     of the SPIR-V extensions listed in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-extensions-table SPIR-V Environment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-extensions-table SPIR-V Environment>
 --     appendix, one of the corresponding requirements /must/ be satisfied
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
--- a/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
+++ b/src/Vulkan/Core10/SparseResourceMemoryManagement.hs
@@ -356,7 +356,7 @@
 -- = Description
 --
 -- 'queueBindSparse' is a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
 -- with each batch defined by an element of @pBindInfo@ as a
 -- 'BindSparseInfo' structure. Batches begin execution in the order they
 -- appear in @pBindInfo@, but /may/ complete out of order.
@@ -374,7 +374,7 @@
 --
 -- Additional information about fence and semaphore operation is described
 -- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
 --
 -- == Valid Usage
 --
@@ -402,7 +402,7 @@
 --     @pWaitSemaphores@ member of all elements of the @pBindInfo@
 --     parameter referring to a binary semaphore /must/ be semaphores that
 --     are signaled, or have
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
 --     previously submitted for execution
 --
 -- -   #VUID-vkQueueBindSparse-pWaitSemaphores-03245# All elements of the
@@ -488,7 +488,7 @@
                    ("bindInfo" ::: Vector (SomeStruct BindSparseInfo))
                 -> -- | @fence@ is an /optional/ handle to a fence to be signaled. If @fence@ is
                    -- not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it defines a
-                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
+                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
                    Fence
                 -> io ()
 queueBindSparse queue bindInfo fence = liftIO . evalContT $ do
@@ -752,7 +752,7 @@
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ and
 --     @memoryOffset@ /must/ match the memory requirements of the resource,
 --     as described in section
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-association>
 --
 -- -   #VUID-VkSparseMemoryBind-memory-01097# If @memory@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', @memory@ /must/ not have
@@ -882,7 +882,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkSparseImageMemoryBind-memory-01104# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sparseResidencyAliased sparse aliased residency>
 --     feature is not enabled, and if any other resources are bound to
 --     ranges of @memory@, the range of @memory@ being bound /must/ not
 --     overlap with those bound ranges
@@ -890,11 +890,11 @@
 -- -   #VUID-VkSparseImageMemoryBind-memory-01105# @memory@ and
 --     @memoryOffset@ /must/ match the memory requirements of the calling
 --     command’s @image@, as described in section
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-association>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-association>
 --
 -- -   #VUID-VkSparseImageMemoryBind-subresource-01106# @subresource@
 --     /must/ be a valid image subresource for @image@ (see
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views>)
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views>)
 --
 -- -   #VUID-VkSparseImageMemoryBind-offset-01107# @offset.x@ /must/ be a
 --     multiple of the sparse image block width
@@ -1281,7 +1281,7 @@
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.TimelineSemaphoreSubmitInfo'::@pSignalSemaphoreValues@
 --     /must/ have a value greater than the current value of the semaphore
 --     when the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 --     is executed
 --
 -- -   #VUID-VkBindSparseInfo-pWaitSemaphores-03250# For each element of
@@ -1293,7 +1293,7 @@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or from the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
 -- -   #VUID-VkBindSparseInfo-pSignalSemaphores-03251# For each element of
 --     @pSignalSemaphores@ created with a
@@ -1304,7 +1304,7 @@
 --     /must/ have a value which does not differ from the current value of
 --     the semaphore or from the value of any outstanding semaphore wait or
 --     signal operation on that semaphore by more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
 --
 -- == Valid Usage (Implicit)
 --
@@ -1361,7 +1361,7 @@
   , -- | @pWaitSemaphores@ is a pointer to an array of semaphores upon which to
     -- wait on before the sparse binding operations for this batch begin
     -- execution. If semaphores to wait on are provided, they define a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>.
     waitSemaphores :: Vector Semaphore
   , -- | @pBufferBinds@ is a pointer to an array of 'SparseBufferMemoryBindInfo'
     -- structures.
@@ -1377,7 +1377,7 @@
     -- signaled when the sparse binding operations for this batch have
     -- completed execution. If semaphores to be signaled are provided, they
     -- define a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>.
     signalSemaphores :: Vector Semaphore
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs b/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
--- a/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/ExternalMemoryHandleTypeFlagBits.hs
@@ -180,7 +180,7 @@
 -- specifies an
 -- 'Vulkan.Extensions.VK_ANDROID_external_memory_android_hardware_buffer.AHardwareBuffer'
 -- object defined by the Android NDK. See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
 -- for more details of this handle type.
 pattern EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = ExternalMemoryHandleTypeFlagBits 0x00000400
 -- | 'EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT' is a file descriptor for a
diff --git a/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs b/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs
--- a/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/FenceImportFlagBits.hs
@@ -31,7 +31,7 @@
 
 -- | 'FENCE_IMPORT_TEMPORARY_BIT' specifies that the fence payload will be
 -- imported only temporarily, as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>,
 -- regardless of the permanence of @handleType@.
 pattern FENCE_IMPORT_TEMPORARY_BIT = FenceImportFlagBits 0x00000001
 
diff --git a/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs b/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs
--- a/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/PeerMemoryFeatureFlagBits.hs
@@ -31,7 +31,7 @@
 --
 -- The peer memory features of a memory heap also apply to any accesses
 -- that /may/ be performed during
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
 --
 -- 'PEER_MEMORY_FEATURE_COPY_DST_BIT' /must/ be supported for all host
 -- local heaps and for at least one device-local memory heap.
diff --git a/src/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs b/src/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs
--- a/src/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs
+++ b/src/Vulkan/Core11/Enums/SamplerYcbcrModelConversion.hs
@@ -30,17 +30,17 @@
 -- -   'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709' specifies the color model
 --     conversion from Y′CBCR to R′G′B′ defined in BT.709 and described in
 --     the “BT.709 Y′CBCR conversion” section of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
 --
 -- -   'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601' specifies the color model
 --     conversion from Y′CBCR to R′G′B′ defined in BT.601 and described in
 --     the “BT.601 Y′CBCR conversion” section of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
 --
 -- -   'SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020' specifies the color
 --     model conversion from Y′CBCR to R′G′B′ defined in BT.2020 and
 --     described in the “BT.2020 Y′CBCR conversion” section of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
 --
 -- In the @VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_*@ color models, for the
 -- input to the sampler Y′CBCR range expansion and model conversion:
diff --git a/src/Vulkan/Core11/Enums/SamplerYcbcrRange.hs b/src/Vulkan/Core11/Enums/SamplerYcbcrRange.hs
--- a/src/Vulkan/Core11/Enums/SamplerYcbcrRange.hs
+++ b/src/Vulkan/Core11/Enums/SamplerYcbcrRange.hs
@@ -19,9 +19,9 @@
 -- = Description
 --
 -- The formulae for these conversions is described in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpand Sampler Y′CBCR Range Expansion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion-rangeexpand Sampler Y′CBCR Range Expansion>
 -- section of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures Image Operations>
 -- chapter.
 --
 -- No range modification takes place if @ycbcrModel@ is
diff --git a/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs b/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs
--- a/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs
+++ b/src/Vulkan/Core11/Enums/SemaphoreImportFlagBits.hs
@@ -35,7 +35,7 @@
 
 -- | 'SEMAPHORE_IMPORT_TEMPORARY_BIT' specifies that the semaphore payload
 -- will be imported only temporarily, as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
 -- regardless of the permanence of @handleType@.
 pattern SEMAPHORE_IMPORT_TEMPORARY_BIT = SemaphoreImportFlagBits 0x00000001
 
diff --git a/src/Vulkan/Core11/Enums/TessellationDomainOrigin.hs b/src/Vulkan/Core11/Enums/TessellationDomainOrigin.hs
--- a/src/Vulkan/Core11/Enums/TessellationDomainOrigin.hs
+++ b/src/Vulkan/Core11/Enums/TessellationDomainOrigin.hs
@@ -31,11 +31,11 @@
 
 -- | 'TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT' specifies that the origin of the
 -- domain space is in the upper left corner, as shown in figure
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ul>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#img-tessellation-topology-ul>.
 pattern TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = TessellationDomainOrigin 0
 -- | 'TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT' specifies that the origin of the
 -- domain space is in the lower left corner, as shown in figure
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#img-tessellation-topology-ll>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#img-tessellation-topology-ll>.
 pattern TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = TessellationDomainOrigin 1
 {-# complete TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
              TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT :: TessellationDomainOrigin #-}
diff --git a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
--- a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
+++ b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_protected_memory.hs
@@ -279,7 +279,7 @@
     -- have undefined values written, reads and queries will return undefined
     -- values. If this limit is 'Vulkan.Core10.FundamentalTypes.FALSE',
     -- applications /must/ not perform these operations. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-protected-access-rules>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-protected-access-rules>
     -- for more information.
     protectedNoFault :: Bool }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
--- a/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
+++ b/src/Vulkan/Core11/Originally_Based_On_VK_KHR_subgroup.hs
@@ -49,7 +49,7 @@
 -- If @supportedOperations@ includes
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad ,>
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderSubgroupUniformControlFlow shaderSubgroupUniformControlFlow>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderSubgroupUniformControlFlow shaderSubgroupUniformControlFlow>
 -- is enabled, @subgroupSize@ /must/ be greater than or equal to 4.
 --
 -- == Valid Usage (Implicit)
@@ -72,9 +72,9 @@
   , -- | #limits-subgroup-supportedStages# @supportedStages@ is a bitfield of
     -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits' describing
     -- the shader stages that
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
     -- are supported in. @supportedStages@ will have the
     -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' bit
     -- set if any of the physical device’s queues support
@@ -83,9 +83,9 @@
   , -- | #limits-subgroupSupportedOperations# @supportedOperations@ is a bitmask
     -- of 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits'
     -- specifying the sets of
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
     -- supported on this device. @supportedOperations@ will have the
     -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_BASIC_BIT'
     -- bit set if any of the physical device’s queues support
@@ -94,7 +94,7 @@
     supportedOperations :: SubgroupFeatureFlags
   , -- | #limits-subgroup-quadOperationsInAllStages# @quadOperationsInAllStages@
     -- is a boolean specifying whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-quad-operations quad group operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-quad-operations quad group operations>
     -- are available in all stages, or are restricted to fragment and compute
     -- stages.
     quadOperationsInAllStages :: Bool
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_descriptor_update_template.hs
@@ -144,7 +144,7 @@
                                   -- or 'updateDescriptorSetWithTemplate'.
                                   DescriptorUpdateTemplateCreateInfo
                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter.
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io (DescriptorUpdateTemplate)
@@ -238,7 +238,7 @@
                                 -> -- | @descriptorUpdateTemplate@ is the descriptor update template to destroy.
                                    DescriptorUpdateTemplate
                                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                    -- chapter.
                                    ("allocator" ::: Maybe AllocationCallbacks)
                                 -> io ()
@@ -421,16 +421,16 @@
 --     implicitly specified when using a descriptor update template to
 --     update descriptors, and all applicable consecutive bindings, as
 --     described by
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates-consecutive>
 --
 -- -   #VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226# If
 --     @descriptor@ type is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     @dstArrayElement@ /must/ be an integer multiple of @4@
 --
 -- -   #VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227# If
 --     @descriptor@ type is
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT',
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK',
 --     @descriptorCount@ /must/ be an integer multiple of @4@
 --
 -- == Valid Usage (Implicit)
@@ -451,7 +451,7 @@
   , -- | @dstArrayElement@ is the starting element in the array belonging to
     -- @dstBinding@. If the descriptor binding identified by @dstBinding@ has a
     -- descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @dstArrayElement@ specifies the starting byte offset to update.
     dstArrayElement :: Word32
   , -- | @descriptorCount@ is the number of descriptors to update. If
@@ -460,7 +460,7 @@
     -- manner similar to 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet'
     -- above. If the descriptor binding identified by @dstBinding@ has a
     -- descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @descriptorCount@ specifies the number of bytes to update and the
     -- remaining array elements in the destination binding refer to the
     -- remaining number of bytes in it.
@@ -481,7 +481,7 @@
     --
     -- The stride is useful in case the bindings are stored in structs along
     -- with other data. If @descriptorType@ is
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then the value of @stride@ is ignored and the stride is assumed to be
     -- @1@, i.e. the descriptor update information for them is always specified
     -- as a contiguous range.
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
@@ -286,7 +286,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDispatchBase-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -342,7 +342,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDispatchBase-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -350,7 +350,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDispatchBase-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -800,12 +800,12 @@
 -- -   #VUID-VkDeviceGroupRenderPassBeginInfo-offset-06168# The sum of the
 --     @offset.x@ and @extent.width@ members of any element of
 --     @pDeviceRenderAreas@ /must/ be less than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferWidth maxFramebufferWidth>
 --
 -- -   #VUID-VkDeviceGroupRenderPassBeginInfo-offset-06169# The sum of the
 --     @offset.y@ and @extent.height@ members of any element of
 --     @pDeviceRenderAreas@ /must/ be less than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFramebufferHeight maxFramebufferHeight>
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_external_memory_capabilities.hs
@@ -525,11 +525,11 @@
 -- where such a restriction exists as defined in the compatibility table
 -- for the particular object type:
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility External memory handle types compatibility>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility External memory handle types compatibility>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility External semaphore handle types compatibility>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility External semaphore handle types compatibility>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility External fence handle types compatibility>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility External fence handle types compatibility>
 --
 -- If @deviceLUIDValid@ is 'Vulkan.Core10.FundamentalTypes.FALSE', the
 -- values of @deviceLUID@ and @deviceNodeMask@ are undefined. If
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_get_memory_requirements2.hs
@@ -476,7 +476,9 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoGetMemoryPropertiesKHR VkVideoGetMemoryPropertiesKHR>,
 -- 'getBufferMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getBufferMemoryRequirements2KHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceBufferMemoryRequirements',
 -- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceBufferMemoryRequirementsKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageMemoryRequirements',
 -- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageMemoryRequirementsKHR',
 -- 'Vulkan.Extensions.VK_NV_device_generated_commands.getGeneratedCommandsMemoryRequirementsNV',
 -- 'getImageMemoryRequirements2',
@@ -544,6 +546,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_1 VK_VERSION_1_1>,
 -- 'Vulkan.Core10.SparseResourceMemoryManagement.SparseImageMemoryRequirements',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirements',
 -- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirementsKHR',
 -- 'getImageSparseMemoryRequirements2',
 -- 'Vulkan.Extensions.VK_KHR_get_memory_requirements2.getImageSparseMemoryRequirements2KHR'
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
@@ -72,7 +72,7 @@
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.Format (Format(..))
 import Vulkan.Core10.DeviceInitialization (FormatProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_format_feature_flags2 (FormatProperties3KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2 (FormatProperties3)
 import Vulkan.Core10.Enums.ImageCreateFlagBits (ImageCreateFlags)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_image_format_list (ImageFormatListCreateInfo)
 import Vulkan.Core10.DeviceInitialization (ImageFormatProperties)
@@ -127,7 +127,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_discard_rectangles (PhysicalDeviceDiscardRectanglePropertiesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_driver_properties (PhysicalDeviceDriverProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_physical_device_drm (PhysicalDeviceDrmPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_scissor_exclusive (PhysicalDeviceExclusiveScissorFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state2 (PhysicalDeviceExtendedDynamicState2FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_extended_dynamic_state (PhysicalDeviceExtendedDynamicStateFeaturesEXT)
@@ -148,25 +148,25 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_fragment_shading_rate_enums (PhysicalDeviceFragmentShadingRateEnumsPropertiesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRateFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (PhysicalDeviceFragmentShadingRatePropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority_query (PhysicalDeviceGlobalPriorityQueryFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_EXT_host_query_reset (PhysicalDeviceHostQueryResetFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities (PhysicalDeviceIDProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_drm_format_modifier (PhysicalDeviceImageDrmFormatModifierInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_filter_cubic (PhysicalDeviceImageViewImageFormatInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_image_view_min_lod (PhysicalDeviceImageViewMinLodFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_imageless_framebuffer (PhysicalDeviceImagelessFramebufferFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_index_type_uint8 (PhysicalDeviceIndexTypeUint8FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_inherited_viewport_scissor (PhysicalDeviceInheritedViewportScissorFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeatures)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_invocation_mask (PhysicalDeviceInvocationMaskFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_line_rasterization (PhysicalDeviceLineRasterizationPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_linear_color_attachment (PhysicalDeviceLinearColorAttachmentFeaturesNV)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance3 (PhysicalDeviceMaintenance3Properties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (PhysicalDeviceMaintenance4FeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (PhysicalDeviceMaintenance4PropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Properties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_budget (PhysicalDeviceMemoryBudgetPropertiesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_memory_priority (PhysicalDeviceMemoryPriorityFeaturesEXT)
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceMemoryProperties)
@@ -182,7 +182,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pageable_device_local_memory (PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PhysicalDevicePerformanceQueryPropertiesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_pipeline_executable_properties (PhysicalDevicePipelineExecutablePropertiesFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_maintenance2 (PhysicalDevicePointClippingProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_portability_subset (PhysicalDevicePortabilitySubsetFeaturesKHR)
@@ -190,7 +190,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_id (PhysicalDevicePresentIdFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_present_wait (PhysicalDevicePresentWaitFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_primitive_topology_list_restart (PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (PhysicalDevicePrivateDataFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures)
 import Vulkan.Core10.DeviceInitialization (PhysicalDeviceProperties)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (PhysicalDeviceProtectedMemoryProperties)
@@ -218,30 +218,30 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_clock (PhysicalDeviceShaderClockFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_core_properties2 (PhysicalDeviceShaderCoreProperties2AMD)
 import {-# SOURCE #-} Vulkan.Extensions.VK_AMD_shader_core_properties (PhysicalDeviceShaderCorePropertiesAMD)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_float16_int8 (PhysicalDeviceShaderFloat16Int8Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductPropertiesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeatures)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsPropertiesNV)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_shader_subgroup_extended_types (PhysicalDeviceShaderSubgroupExtendedTypesFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_subgroup_uniform_control_flow (PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImagePropertiesNV)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup (PhysicalDeviceSubgroupProperties)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeatures)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingFeaturesHUAWEI)
 import {-# SOURCE #-} Vulkan.Extensions.VK_HUAWEI_subpass_shading (PhysicalDeviceSubpassShadingPropertiesHUAWEI)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (PhysicalDeviceSynchronization2FeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentPropertiesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentProperties)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreFeatures)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore (PhysicalDeviceTimelineSemaphoreProperties)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_transform_feedback (PhysicalDeviceTransformFeedbackFeaturesEXT)
@@ -255,17 +255,19 @@
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan11Properties)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Features)
 import {-# SOURCE #-} Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
+import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Features)
+import {-# SOURCE #-} Vulkan.Core13 (PhysicalDeviceVulkan13Properties)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model (PhysicalDeviceVulkanMemoryModelFeatures)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats (PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_ycbcr_image_arrays (PhysicalDeviceYcbcrImageArraysFeaturesEXT)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
 import Vulkan.Core10.Handles (PhysicalDevice_T)
 import Vulkan.CStruct.Extends (PokeChain)
 import Vulkan.CStruct.Extends (PokeChain(..))
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (QueueFamilyCheckpointProperties2NV)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints (QueueFamilyCheckpointPropertiesNV)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_global_priority_query (QueueFamilyGlobalPriorityPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_global_priority (QueueFamilyGlobalPriorityPropertiesKHR)
 import Vulkan.Core10.DeviceInitialization (QueueFamilyProperties)
 import Vulkan.Core10.Enums.Result (Result)
 import Vulkan.Core10.Enums.Result (Result(..))
@@ -722,44 +724,45 @@
     | Just Refl <- eqT @e @PhysicalDeviceLinearColorAttachmentFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImageViewMinLodFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceDynamicRenderingFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRGBA10X6FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRayTracingMotionBlurFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceInheritedViewportScissorFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceSynchronization2FeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSynchronization2Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceColorWriteEnableFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryRDMAFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVertexInputDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDepthClipControlFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMutableDescriptorTypeFeaturesVALVE = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderTerminateInvocationFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderImageAtomicInt64FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubpassShadingFeaturesHUAWEI = Just f
     | Just Refl <- eqT @e @PhysicalDevice4444FormatsFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceImageRobustnessFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceImageRobustnessFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRobustness2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDiagnosticsConfigFeaturesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicState2FeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExtendedDynamicStateFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBorderColorSwizzleFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCustomBorderColorFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCoherentMemoryFeaturesAMD = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVulkan13Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVulkan12Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVulkan11Features = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePipelineCreationCacheControlFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePipelineCreationCacheControlFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderDemoteToHelperInvocationFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDevicePipelineExecutablePropertiesFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSeparateDepthStencilLayoutsFeatures = Just f
@@ -772,7 +775,7 @@
     | Just Refl <- eqT @e @PhysicalDevicePerformanceQueryFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceYcbcrImageArraysFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixFeaturesNV = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTextureCompressionASTCHDRFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceImagelessFramebufferFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBufferDeviceAddressFeatures = Just f
@@ -809,12 +812,12 @@
     | Just Refl <- eqT @e @PhysicalDeviceTimelineSemaphoreFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDescriptorIndexingFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceMemoryReportFeaturesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceGlobalPriorityQueryFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceGlobalPriorityQueryFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceHostQueryResetFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderFloat16Int8Features = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderDrawParametersFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance4FeaturesKHR = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance4Features = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultiDrawFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedFeaturesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProtectedMemoryFeatures = Just f
@@ -825,7 +828,7 @@
     | Just Refl <- eqT @e @PhysicalDevicePresentIdFeaturesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMultiviewFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVariablePointersFeatures = Just f
-    | Just Refl <- eqT @e @PhysicalDevicePrivateDataFeaturesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDevicePrivateDataFeatures = Just f
     | Just Refl <- eqT @e @PhysicalDeviceDeviceGeneratedCommandsFeaturesNV = Just f
     | otherwise = Nothing
 
@@ -895,10 +898,10 @@
 --     'Vulkan.Extensions.VK_NV_fragment_shading_rate_enums.PhysicalDeviceFragmentShadingRateEnumsPropertiesNV',
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.PhysicalDeviceFragmentShadingRatePropertiesKHR',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_memory_capabilities.PhysicalDeviceIDProperties',
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockPropertiesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties',
 --     'Vulkan.Extensions.VK_EXT_line_rasterization.PhysicalDeviceLineRasterizationPropertiesEXT',
 --     'Vulkan.Core11.Promoted_From_VK_KHR_maintenance3.PhysicalDeviceMaintenance3Properties',
---     'Vulkan.Extensions.VK_KHR_maintenance4.PhysicalDeviceMaintenance4PropertiesKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_maintenance4.PhysicalDeviceMaintenance4Properties',
 --     'Vulkan.Extensions.VK_NV_mesh_shader.PhysicalDeviceMeshShaderPropertiesNV',
 --     'Vulkan.Extensions.VK_EXT_multi_draw.PhysicalDeviceMultiDrawPropertiesEXT',
 --     'Vulkan.Extensions.VK_NVX_multiview_per_view_attributes.PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX',
@@ -917,18 +920,19 @@
 --     'Vulkan.Core12.Promoted_From_VK_EXT_sampler_filter_minmax.PhysicalDeviceSamplerFilterMinmaxProperties',
 --     'Vulkan.Extensions.VK_AMD_shader_core_properties2.PhysicalDeviceShaderCoreProperties2AMD',
 --     'Vulkan.Extensions.VK_AMD_shader_core_properties.PhysicalDeviceShaderCorePropertiesAMD',
---     'Vulkan.Extensions.VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductPropertiesKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product.PhysicalDeviceShaderIntegerDotProductProperties',
 --     'Vulkan.Extensions.VK_NV_shader_sm_builtins.PhysicalDeviceShaderSMBuiltinsPropertiesNV',
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PhysicalDeviceShadingRateImagePropertiesNV',
 --     'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties',
---     'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlPropertiesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties',
 --     'Vulkan.Extensions.VK_HUAWEI_subpass_shading.PhysicalDeviceSubpassShadingPropertiesHUAWEI',
---     'Vulkan.Extensions.VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentPropertiesEXT',
+--     'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties',
 --     'Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore.PhysicalDeviceTimelineSemaphoreProperties',
 --     'Vulkan.Extensions.VK_EXT_transform_feedback.PhysicalDeviceTransformFeedbackPropertiesEXT',
 --     'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT',
---     'Vulkan.Core12.PhysicalDeviceVulkan11Properties', or
---     'Vulkan.Core12.PhysicalDeviceVulkan12Properties'
+--     'Vulkan.Core12.PhysicalDeviceVulkan11Properties',
+--     'Vulkan.Core12.PhysicalDeviceVulkan12Properties', or
+--     'Vulkan.Core13.PhysicalDeviceVulkan13Properties'
 --
 -- -   #VUID-VkPhysicalDeviceProperties2-sType-unique# The @sType@ value of
 --     each struct in the @pNext@ chain /must/ be unique
@@ -963,19 +967,20 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends PhysicalDeviceProperties2 e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @PhysicalDeviceDrmPropertiesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductPropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceShaderIntegerDotProductProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceProvokingVertexPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRateEnumsPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFragmentShadingRatePropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDevicePortabilitySubsetPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceRobustness2PropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCustomBorderColorPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceVulkan13Properties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVulkan12Properties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceVulkan11Properties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceLineRasterizationPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSubpassShadingPropertiesHUAWEI = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlPropertiesEXT = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceSubgroupSizeControlProperties = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceTexelBufferAlignmentProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceShaderSMBuiltinsPropertiesNV = Just f
     | Just Refl <- eqT @e @PhysicalDevicePerformanceQueryPropertiesKHR = Just f
     | Just Refl <- eqT @e @PhysicalDeviceCooperativeMatrixPropertiesNV = Just f
@@ -998,9 +1003,9 @@
     | Just Refl <- eqT @e @PhysicalDeviceConservativeRasterizationPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceExternalMemoryHostPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceFloatControlsProperties = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceMaintenance4PropertiesKHR = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceMaintenance4Properties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceMaintenance3Properties = Just f
-    | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockPropertiesEXT = Just f
+    | Just Refl <- eqT @e @PhysicalDeviceInlineUniformBlockProperties = Just f
     | Just Refl <- eqT @e @PhysicalDeviceBlendOperationAdvancedPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSampleLocationsPropertiesEXT = Just f
     | Just Refl <- eqT @e @PhysicalDeviceSamplerFilterMinmaxProperties = Just f
@@ -1060,7 +1065,7 @@
 --     @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesList2EXT',
 --     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesListEXT',
---     'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatProperties3KHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2.FormatProperties3',
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH264ProfileEXT VkVideoDecodeH264ProfileEXT>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoDecodeH265ProfileEXT VkVideoDecodeH265ProfileEXT>,
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoEncodeH264ProfileEXT VkVideoEncodeH264ProfileEXT>,
@@ -1100,7 +1105,7 @@
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends FormatProperties2 e => b) -> Maybe b
   extends _ f
     | Just Refl <- eqT @e @DrmFormatModifierPropertiesList2EXT = Just f
-    | Just Refl <- eqT @e @FormatProperties3KHR = Just f
+    | Just Refl <- eqT @e @FormatProperties3 = Just f
     | Just Refl <- eqT @e @DrmFormatModifierPropertiesListEXT = Just f
     | otherwise = Nothing
 
@@ -1424,7 +1429,7 @@
 --     either @NULL@ or a pointer to a valid instance of
 --     'Vulkan.Extensions.VK_KHR_synchronization2.QueueFamilyCheckpointProperties2NV',
 --     'Vulkan.Extensions.VK_NV_device_diagnostic_checkpoints.QueueFamilyCheckpointPropertiesNV',
---     'Vulkan.Extensions.VK_EXT_global_priority_query.QueueFamilyGlobalPriorityPropertiesEXT',
+--     'Vulkan.Extensions.VK_KHR_global_priority.QueueFamilyGlobalPriorityPropertiesKHR',
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFamilyQueryResultStatusProperties2KHR VkQueueFamilyQueryResultStatusProperties2KHR>,
 --     or
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkVideoQueueFamilyProperties2KHR VkVideoQueueFamilyProperties2KHR>
@@ -1462,7 +1467,7 @@
   extends _ f
     | Just Refl <- eqT @e @QueueFamilyCheckpointProperties2NV = Just f
     | Just Refl <- eqT @e @QueueFamilyCheckpointPropertiesNV = Just f
-    | Just Refl <- eqT @e @QueueFamilyGlobalPriorityPropertiesEXT = Just f
+    | Just Refl <- eqT @e @QueueFamilyGlobalPriorityPropertiesKHR = Just f
     | otherwise = Nothing
 
 instance (Extendss QueueFamilyProperties2 es, PokeChain es) => ToCStruct (QueueFamilyProperties2 es) where
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_multiview.hs
@@ -66,7 +66,7 @@
 -- -   #extension-features-multiview-gs# @multiviewGeometryShader@
 --     specifies whether the implementation supports multiview rendering
 --     within a render pass, with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry geometry shaders>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#geometry geometry shaders>.
 --     If this feature is not enabled, then a pipeline compiled against a
 --     subpass with a non-zero view mask /must/ not include a geometry
 --     shader.
@@ -74,7 +74,7 @@
 -- -   #extension-features-multiview-tess# @multiviewTessellationShader@
 --     specifies whether the implementation supports multiview rendering
 --     within a render pass, with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation tessellation shaders>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation tessellation shaders>.
 --     If this feature is not enabled, then a pipeline compiled against a
 --     subpass with a non-zero view mask /must/ not include any
 --     tessellation shaders.
@@ -257,9 +257,9 @@
 -- additional broadcasting.
 --
 -- Some implementations /may/ not support multiview in conjunction with
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-gs geometry shaders>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-gs geometry shaders>
 -- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview-tess tessellation shaders>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview-tess tessellation shaders>.
 --
 -- When multiview is enabled, the
 -- 'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT' bit
diff --git a/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs b/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
--- a/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src/Vulkan/Core11/Promoted_From_VK_KHR_sampler_ycbcr_conversion.hs
@@ -128,15 +128,15 @@
 --
 -- The interpretation of the configured sampler Y′CBCR conversion is
 -- described in more detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
 -- in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures Image Operations>
 -- chapter.
 --
 -- == Valid Usage
 --
 -- -   #VUID-vkCreateSamplerYcbcrConversion-None-01648# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-samplerYcbcrConversion sampler Y′CBCR conversion feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-samplerYcbcrConversion sampler Y′CBCR conversion feature>
 --     /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -185,7 +185,7 @@
                                 -- structure specifying the requested sampler Y′CBCR conversion.
                                 (SamplerYcbcrConversionCreateInfo a)
                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                 -- chapter.
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (SamplerYcbcrConversion)
@@ -263,7 +263,7 @@
                               -> -- | @ycbcrConversion@ is the conversion to destroy.
                                  SamplerYcbcrConversion
                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io ()
@@ -357,7 +357,7 @@
 -- conversion object represents an /external format conversion/, and
 -- @format@ /must/ be 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'. Such
 -- conversions /must/ only be used to sample image views with a matching
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external format>.
 -- When creating an external format conversion, the value of @components@
 -- is ignored.
 --
@@ -373,58 +373,58 @@
 --     @UNORM@ format)
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-format-01650# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the sampler Y′CBCR conversion /must/ support
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT'
 --     or
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT'
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the sampler Y′CBCR conversion do not support
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT',
 --     @xChromaOffset@ and @yChromaOffset@ /must/ not be
 --     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN' if
 --     the corresponding components are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled>
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the sampler Y′CBCR conversion do not support
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT',
 --     @xChromaOffset@ and @yChromaOffset@ /must/ not be
 --     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT' if the
 --     corresponding components are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction downsampled>
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-components-02581# If the
 --     format has a @_422@ or @_420@ suffix, then @components.g@ /must/ be
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-components-02582# If the
 --     format has a @_422@ or @_420@ suffix, then @components.a@ /must/ be
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>,
 --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE', or
 --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ZERO'
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-components-02583# If the
 --     format has a @_422@ or @_420@ suffix, then @components.r@ /must/ be
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --     or 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_B'
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-components-02584# If the
 --     format has a @_422@ or @_420@ suffix, then @components.b@ /must/ be
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
 --     or 'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_R'
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-components-02585# If the
 --     format has a @_422@ or @_420@ suffix, and if either @components.r@
 --     or @components.b@ is the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>,
 --     both values /must/ be the identity swizzle
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655# If
@@ -437,7 +437,7 @@
 --     'Vulkan.Core10.Enums.ComponentSwizzle.COMPONENT_SWIZZLE_ONE', and
 --     /must/ not correspond to a component containing zero or one as a
 --     consequence of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba conversion to RGBA>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba conversion to RGBA>
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748# If
 --     @ycbcrRange@ is
@@ -448,14 +448,14 @@
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the sampler Y′CBCR conversion do not support
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'
 --     @forceExplicitReconstruction@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     of the sampler Y′CBCR conversion do not support
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT',
 --     @chromaFilter@ /must/ not be
@@ -506,9 +506,9 @@
 -- samples are reconstructed to luma component resolution using
 -- nearest-neighbour sampling. Otherwise, chroma samples are reconstructed
 -- using interpolation. More details can be found in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-sampler-YCbCr-conversion the description of sampler Y′CBCR conversion>
 -- in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures Image Operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures Image Operations>
 -- chapter.
 --
 -- = See Also
@@ -541,13 +541,13 @@
     -- range expansion and color model conversion.
     components :: ComponentMapping
   , -- | @xChromaOffset@ describes the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>
     -- associated with downsampled chroma components in the x dimension.
     -- @xChromaOffset@ has no effect for formats in which chroma components are
     -- not downsampled horizontally.
     xChromaOffset :: ChromaLocation
   , -- | @yChromaOffset@ describes the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction sample location>
     -- associated with downsampled chroma components in the y dimension.
     -- @yChromaOffset@ has no effect for formats in which the chroma components
     -- are not downsampled vertically.
@@ -836,7 +836,7 @@
 data PhysicalDeviceSamplerYcbcrConversionFeatures = PhysicalDeviceSamplerYcbcrConversionFeatures
   { -- | #extension-features-samplerYcbcrConversion# @samplerYcbcrConversion@
     -- specifies whether the implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>.
     -- If @samplerYcbcrConversion@ is 'Vulkan.Core10.FundamentalTypes.FALSE',
     -- sampler Y′CBCR conversion is not supported, and samplers using sampler
     -- Y′CBCR conversion /must/ not be used.
diff --git a/src/Vulkan/Core12.hs b/src/Vulkan/Core12.hs
--- a/src/Vulkan/Core12.hs
+++ b/src/Vulkan/Core12.hs
@@ -358,9 +358,9 @@
   , -- | #limits-subgroupSupportedStages# @subgroupSupportedStages@ is a bitfield
     -- of 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits'
     -- describing the shader stages that
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
     -- are supported in. @subgroupSupportedStages@ will have the
     -- 'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_COMPUTE_BIT' bit
     -- set if any of the physical device’s queues support
@@ -369,9 +369,9 @@
   , -- | @subgroupSupportedOperations@ is a bitmask of
     -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SubgroupFeatureFlagBits'
     -- specifying the sets of
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>
     -- supported on this device. @subgroupSupportedOperations@ will have the
     -- 'Vulkan.Core11.Enums.SubgroupFeatureFlagBits.SUBGROUP_FEATURE_BASIC_BIT'
     -- bit set if any of the physical device’s queues support
@@ -380,7 +380,7 @@
     subgroupSupportedOperations :: SubgroupFeatureFlags
   , -- | #limits-subgroupQuadOperationsInAllStages#
     -- @subgroupQuadOperationsInAllStages@ is a boolean specifying whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-quad-operations quad group operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-quad-operations quad group operations>
     -- are available in all stages, or are restricted to fragment and compute
     -- stages.
     subgroupQuadOperationsInAllStages :: Bool
@@ -600,7 +600,7 @@
 -- -   #features-descriptorIndexing# @descriptorIndexing@ indicates whether
 --     the implementation supports the minimum set of descriptor indexing
 --     features as described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirements Feature Requirements>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-requirements Feature Requirements>
 --     section. Enabling the @descriptorIndexing@ member when
 --     'Vulkan.Core10.Device.createDevice' is called does not imply the
 --     other minimum descriptor indexing features are also enabled. Those
@@ -805,7 +805,7 @@
 -- -   #features-samplerFilterMinmax# @samplerFilterMinmax@ indicates
 --     whether the implementation supports a minimum set of required
 --     formats supporting min\/max filtering as defined by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements filterMinmaxSingleComponentFormats>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-filterMinmaxSingleComponentFormats-minimum-requirements filterMinmaxSingleComponentFormats>
 --     property minimum requirements. If this feature is not enabled, then
 --     no 'Vulkan.Core10.Sampler.SamplerCreateInfo' @pNext@ chain can
 --     include a
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
@@ -86,11 +86,13 @@
 -- 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_EXT'
--- where @descriptorCount@ specifies the upper bound on the byte size of
--- the binding, thus it counts against the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize>
--- limit instead.
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'.
+-- In this case, @descriptorCount@ specifies the upper bound on the byte
+-- size of the binding; thus it counts against the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInlineUniformBlockSize maxInlineUniformBlockSize>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInlineUniformTotalSize maxInlineUniformTotalSize>
+-- limits instead.
 pattern DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT   = DescriptorBindingFlagBits 0x00000008
 
 conNameDescriptorBindingFlagBits :: String
diff --git a/src/Vulkan/Core12/Enums/DriverId.hs b/src/Vulkan/Core12/Enums/DriverId.hs
--- a/src/Vulkan/Core12/Enums/DriverId.hs
+++ b/src/Vulkan/Core12/Enums/DriverId.hs
@@ -21,6 +21,7 @@
                                               , DRIVER_ID_MESA_V3DV
                                               , DRIVER_ID_MESA_PANVK
                                               , DRIVER_ID_SAMSUNG_PROPRIETARY
+                                              , DRIVER_ID_MESA_VENUS
                                               , ..
                                               )) where
 
@@ -102,6 +103,8 @@
 pattern DRIVER_ID_MESA_PANVK                = DriverId 20
 -- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_SAMSUNG_PROPRIETARY"
 pattern DRIVER_ID_SAMSUNG_PROPRIETARY       = DriverId 21
+-- No documentation found for Nested "VkDriverId" "VK_DRIVER_ID_MESA_VENUS"
+pattern DRIVER_ID_MESA_VENUS                = DriverId 22
 {-# complete DRIVER_ID_AMD_PROPRIETARY,
              DRIVER_ID_AMD_OPEN_SOURCE,
              DRIVER_ID_MESA_RADV,
@@ -122,7 +125,8 @@
              DRIVER_ID_MESA_TURNIP,
              DRIVER_ID_MESA_V3DV,
              DRIVER_ID_MESA_PANVK,
-             DRIVER_ID_SAMSUNG_PROPRIETARY :: DriverId #-}
+             DRIVER_ID_SAMSUNG_PROPRIETARY,
+             DRIVER_ID_MESA_VENUS :: DriverId #-}
 
 conNameDriverId :: String
 conNameDriverId = "DriverId"
@@ -153,6 +157,7 @@
   , (DRIVER_ID_MESA_V3DV                , "MESA_V3DV")
   , (DRIVER_ID_MESA_PANVK               , "MESA_PANVK")
   , (DRIVER_ID_SAMSUNG_PROPRIETARY      , "SAMSUNG_PROPRIETARY")
+  , (DRIVER_ID_MESA_VENUS               , "MESA_VENUS")
   ]
 
 instance Show DriverId where
diff --git a/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs b/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs
--- a/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs
+++ b/src/Vulkan/Core12/Enums/ResolveModeFlagBits.hs
@@ -30,7 +30,7 @@
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve VK_KHR_depth_stencil_resolve>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_2 VK_VERSION_1_2>,
--- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingAttachmentInfoKHR',
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingAttachmentInfo',
 -- 'ResolveModeFlags',
 -- 'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.SubpassDescriptionDepthStencilResolve'
 newtype ResolveModeFlagBits = ResolveModeFlagBits Flags
diff --git a/src/Vulkan/Core12/Enums/SamplerReductionMode.hs b/src/Vulkan/Core12/Enums/SamplerReductionMode.hs
--- a/src/Vulkan/Core12/Enums/SamplerReductionMode.hs
+++ b/src/Vulkan/Core12/Enums/SamplerReductionMode.hs
@@ -28,7 +28,7 @@
 -- | 'SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE' specifies that texel values
 -- are combined by computing a weighted average of values in the footprint,
 -- using weights as specified in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer the image operations chapter>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-unnormalized-to-integer the image operations chapter>.
 pattern SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = SamplerReductionMode 0
 -- | 'SAMPLER_REDUCTION_MODE_MIN' specifies that texel values are combined by
 -- taking the component-wise minimum of values in the footprint with
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_descriptor_indexing.hs
@@ -458,7 +458,7 @@
   , -- | #extension-limits-robustBufferAccessUpdateAfterBind#
     -- @robustBufferAccessUpdateAfterBind@ is a boolean value indicating
     -- whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
     -- /can/ be enabled in a device simultaneously with
     -- @descriptorBindingUniformBufferUpdateAfterBind@,
     -- @descriptorBindingStorageBufferUpdateAfterBind@,
@@ -473,7 +473,7 @@
     -- calculations for image operations have well-defined results when the
     -- image and\/or sampler objects used for the instruction are not uniform
     -- within a quad. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-derivative-image-operations Derivative Image Operations>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-derivative-image-operations Derivative Image Operations>.
     quadDivergentImplicitLod :: Bool
   , -- | #extension-limits-maxPerStageDescriptorUpdateAfterBindSamplers#
     -- @maxPerStageDescriptorUpdateAfterBindSamplers@ is similar to
@@ -806,9 +806,9 @@
 --
 -- -   #VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211#
 --     If
---     'Vulkan.Extensions.VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeaturesEXT'::@descriptorBindingInlineUniformBlockUpdateAfterBind@
+--     'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockFeatures'::@descriptorBindingInlineUniformBlockUpdateAfterBind@
 --     is not enabled, all bindings with descriptor type
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --     /must/ not use
 --     'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
 --
@@ -927,7 +927,7 @@
 -- variable count descriptor binding in the corresponding descriptor set
 -- layout. If the variable count descriptor binding in the corresponding
 -- descriptor set layout has a descriptor type of
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 -- then @pDescriptorCounts@[i] specifies the binding’s capacity in bytes.
 -- If
 -- 'Vulkan.Core10.DescriptorSet.DescriptorSetAllocateInfo'::@pSetLayouts@[i]
@@ -1042,7 +1042,7 @@
     -- supported in the highest numbered binding of the layout, if that binding
     -- is variable-sized. If the highest numbered binding of the layout has a
     -- descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
     -- then @maxVariableDescriptorCount@ indicates the maximum byte size
     -- supported for the binding, if that binding is variable-sized.
     maxVariableDescriptorCount :: Word32 }
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_host_query_reset.hs
@@ -67,7 +67,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkResetQueryPool-None-02665# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-hostQueryReset hostQueryReset>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-hostQueryReset hostQueryReset>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkResetQueryPool-firstQuery-02666# @firstQuery@ /must/ be less
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_sampler_filter_minmax.hs
@@ -65,7 +65,7 @@
 -- 'Vulkan.Core10.FundamentalTypes.FALSE' the component mapping of the
 -- image view used with min\/max filtering /must/ have been created with
 -- the @r@ component set to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>.
 -- Only the @r@ component of the sampled image value is defined and the
 -- other component values are undefined. If
 -- @filterMinmaxImageComponentMapping@ is
diff --git a/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs b/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_EXT_scalar_block_layout.hs
@@ -57,7 +57,7 @@
   { -- | #extension-features-scalarBlockLayout# @scalarBlockLayout@ indicates
     -- that the implementation supports the layout of resource blocks in
     -- shaders using
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>.
     scalarBlockLayout :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_buffer_device_address.hs
@@ -96,12 +96,12 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetBufferOpaqueCaptureAddress-None-03326# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetBufferOpaqueCaptureAddress-device-03327# If @device@ was
 --     created with multiple physical devices, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -169,16 +169,16 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressEXT ::bufferDeviceAddress>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressEXT ::bufferDeviceAddress>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetBufferDeviceAddress-device-03325# If @device@ was created
 --     with multiple physical devices, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDeviceEXT ::bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -240,12 +240,12 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddress bufferDeviceAddress>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335# If
 --     @device@ was created with multiple physical devices, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_create_renderpass2.hs
@@ -92,7 +92,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_fragment_shading_rate (FragmentShadingRateAttachmentInfoKHR)
 import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlags)
 import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (MemoryBarrier2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (MemoryBarrier2)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
@@ -183,7 +183,7 @@
                      -- describing the parameters of the render pass.
                      (RenderPassCreateInfo2 a)
                   -> -- | @pAllocator@ controls host memory allocation as described in the
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                      -- chapter.
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io (RenderPass)
@@ -562,7 +562,7 @@
 --
 -- -   #VUID-vkCmdEndRenderPass2-None-06171# The current render pass
 --     instance /must/ not have been begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --
 -- == Valid Usage (Implicit)
 --
@@ -638,7 +638,7 @@
 -- those parameters.
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
 -- feature is enabled, and @format@ is a depth\/stencil format,
 -- @initialLayout@ and @finalLayout@ /can/ be set to a layout that only
 -- specifies the layout of the depth aspect.
@@ -696,7 +696,7 @@
 --
 -- -   #VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03298# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
 --     feature is not enabled, @initialLayout@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
@@ -706,7 +706,7 @@
 --
 -- -   #VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03299# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
 --     feature is not enabled, @finalLayout@ /must/ not be
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
 --     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
@@ -966,7 +966,7 @@
 -- other than an input attachment reference.
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
 -- feature is enabled, and @attachment@ has a depth\/stencil format,
 -- @layout@ /can/ be set to a layout that only specifies the layout of the
 -- depth aspect.
@@ -988,7 +988,7 @@
 --
 -- -   #VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
 --     feature is not enabled, and @attachment@ is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED', @layout@ /must/ not
 --     be
@@ -1200,7 +1200,7 @@
 --     in @pInputAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain at least
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --     or
@@ -1210,7 +1210,7 @@
 --     in @pColorAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1218,7 +1218,7 @@
 --     attachments in @pResolveAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
 --
@@ -1226,42 +1226,42 @@
 --     @pDepthStencilAttachment@ is not @NULL@ and the attachment is not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' then it /must/ have
 --     an image format whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
 -- -   #VUID-VkSubpassDescription2-linearColorAttachment-06499# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled and the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', all
 --     attachments in @pInputAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription2-linearColorAttachment-06500# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled and the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', all
 --     attachments in @pColorAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription2-linearColorAttachment-06501# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
 --     feature is enabled and the image is created with
 --     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', all
 --     attachments in @pResolveAttachments@ that are not
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' /must/ have image
 --     formats whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- -   #VUID-VkSubpassDescription2-pColorAttachments-03070# If the
 --     @VK_AMD_mixed_attachment_samples@ extension is enabled, all
@@ -1294,7 +1294,7 @@
 --
 -- -   #VUID-VkSubpassDescription2-None-04439# Attachments /must/ follow
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#attachment-type-imagelayout image layout requirements>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#attachment-type-imagelayout image layout requirements>
 --     based on the type of attachment it is being used as
 --
 -- -   #VUID-VkSubpassDescription2-flags-03076# If @flags@ includes
@@ -1535,12 +1535,12 @@
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'::@pViewOffsets@
 -- has on each corresponding subpass dependency.
 --
--- If a 'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR'
--- structure is included in the @pNext@ chain, @srcStageMask@,
--- @dstStageMask@, @srcAccessMask@, and @dstAccessMask@ parameters are
--- ignored. The synchronization and access scopes instead are defined by
--- the parameters of
--- 'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR'.
+-- If a
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.MemoryBarrier2' is
+-- included in the @pNext@ chain, @srcStageMask@, @dstStageMask@,
+-- @srcAccessMask@, and @dstAccessMask@ parameters are ignored. The
+-- synchronization and access scopes instead are defined by the parameters
+-- of 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.MemoryBarrier2'.
 --
 -- == Valid Usage
 --
@@ -1648,24 +1648,24 @@
 -- -   #VUID-VkSubpassDependency2-srcSubpass-03087# If @srcSubpass@ is
 --     equal to @dstSubpass@ and not all of the stages in @srcStageMask@
 --     and @dstStageMask@ are
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stages>,
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically latest>
 --     pipeline stage in @srcStageMask@ /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
 --     than or equal to the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earliest>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earliest>
 --     pipeline stage in @dstStageMask@
 --
 -- -   #VUID-VkSubpassDependency2-srcAccessMask-03088# Any access flag
 --     included in @srcAccessMask@ /must/ be supported by one of the
 --     pipeline stages in @srcStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
 --
 -- -   #VUID-VkSubpassDependency2-dstAccessMask-03089# Any access flag
 --     included in @dstAccessMask@ /must/ be supported by one of the
 --     pipeline stages in @dstStageMask@, as specified in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types-supported table of supported access types>
 --
 -- -   #VUID-VkSubpassDependency2-dependencyFlags-03090# If
 --     @dependencyFlags@ includes
@@ -1681,7 +1681,7 @@
 --
 -- -   #VUID-VkSubpassDependency2-srcSubpass-02245# If @srcSubpass@ equals
 --     @dstSubpass@, and @srcStageMask@ and @dstStageMask@ both include a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-framebuffer-regions framebuffer-space stage>,
 --     then @dependencyFlags@ /must/ include
 --     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_BY_REGION_BIT'
 --
@@ -1700,7 +1700,7 @@
 --
 -- -   #VUID-VkSubpassDependency2-pNext-pNext# @pNext@ /must/ be @NULL@ or
 --     a pointer to a valid instance of
---     'Vulkan.Extensions.VK_KHR_synchronization2.MemoryBarrier2KHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.MemoryBarrier2'
 --
 -- -   #VUID-VkSubpassDependency2-sType-unique# The @sType@ value of each
 --     struct in the @pNext@ chain /must/ be unique
@@ -1748,20 +1748,20 @@
   , -- | @srcStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks source stage mask>.
     srcStageMask :: PipelineStageFlags
   , -- | @dstStageMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
     -- specifying the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-masks destination stage mask>
     dstStageMask :: PipelineStageFlags
   , -- | @srcAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks source access mask>.
     srcAccessMask :: AccessFlags
   , -- | @dstAccessMask@ is a bitmask of
     -- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' specifying a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-masks destination access mask>.
     dstAccessMask :: AccessFlags
   , -- | @dependencyFlags@ is a bitmask of
     -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits'.
@@ -1782,7 +1782,7 @@
   getNext SubpassDependency2{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubpassDependency2 e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @MemoryBarrier2KHR = Just f
+    | Just Refl <- eqT @e @MemoryBarrier2 = Just f
     | otherwise = Nothing
 
 instance (Extendss SubpassDependency2 es, PokeChain es) => ToCStruct (SubpassDependency2 es) where
@@ -1926,7 +1926,7 @@
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage flags
 --     included in the @srcStageMask@ member of that dependency /must/ be a
 --     pipeline stage supported by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
 --     identified by the @pipelineBindPoint@ member of the source subpass
 --
 -- -   #VUID-VkRenderPassCreateInfo2-pDependencies-03055# For any element
@@ -1934,7 +1934,7 @@
 --     'Vulkan.Core10.APIConstants.SUBPASS_EXTERNAL', all stage flags
 --     included in the @dstStageMask@ member of that dependency /must/ be a
 --     pipeline stage supported by the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-types pipeline>
 --     identified by the @pipelineBindPoint@ member of the destination
 --     subpass
 --
@@ -1997,7 +1997,7 @@
 -- -   #VUID-VkRenderPassCreateInfo2-pAttachments-04586# If any element of
 --     @pAttachments@ is used as a fragment shading rate attachment in any
 --     subpass, it /must/ have an image format whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_depth_stencil_resolve.hs
@@ -190,7 +190,7 @@
 --     If @pDepthStencilResolveAttachment@ is not @NULL@ and does not have
 --     the value 'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED' then it
 --     /must/ have an image format whose
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
 --     contain
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
 --
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
@@ -71,7 +71,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -127,7 +127,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -135,7 +135,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -336,50 +336,50 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-viewportCount-03417# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawIndirectCount-scissorCount-03418# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawIndirectCount-viewportCount-03419# If the bound
 --     graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-viewportCount-04137# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -387,11 +387,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-viewportCount-04138# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -399,11 +399,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-viewportCount-04139# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -411,11 +411,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-viewportCount-04140# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -423,11 +423,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141# If
 --     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -435,11 +435,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142# If
 --     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -447,21 +447,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-04876# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-04877# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -479,14 +479,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-blendEnable-04727# If rasterization is
@@ -509,7 +509,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06172# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -518,7 +518,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06173# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -527,7 +527,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06174# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -536,7 +536,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06175# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -545,7 +545,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06176# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -554,7 +554,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06177# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -563,61 +563,61 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-viewMask-06178# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06179# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06180# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06181# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06182# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06183# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -626,7 +626,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-imageView-06184# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -639,11 +639,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -655,13 +655,13 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -669,17 +669,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -687,7 +687,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06188# If the
 --     currently bound pipeline was created without a
@@ -695,11 +695,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -708,37 +708,37 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-pDepthAttachment-06189# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectCount-pStencilAttachment-06190# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectCount-renderPass-06198# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -761,7 +761,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-primitiveTopology-03420# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -777,7 +777,7 @@
 --     pipeline was created with both the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic states enabled, then
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -785,7 +785,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-pStrides-04913# If the bound graphics
 --     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     dynamic state enabled, then
@@ -813,7 +813,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectCount-None-04879# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1015,7 +1015,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -1071,7 +1071,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -1079,7 +1079,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-02697# For each set /n/
 --     that is statically used by the 'Vulkan.Core10.Handles.Pipeline'
@@ -1282,50 +1282,50 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419# If the
 --     bound graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1333,11 +1333,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1345,11 +1345,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1357,11 +1357,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04140# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1369,11 +1369,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1381,11 +1381,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1393,21 +1393,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04876# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04877# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -1425,14 +1425,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727# If
@@ -1456,7 +1456,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06172# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1465,7 +1465,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06173# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1474,7 +1474,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06174# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1483,7 +1483,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06175# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1492,7 +1492,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06176# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1501,7 +1501,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06177# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1510,61 +1510,61 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-viewMask-06178# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06180# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06181# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06182# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06183# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1573,7 +1573,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-imageView-06184# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1586,11 +1586,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -1602,13 +1602,13 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1616,17 +1616,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1634,7 +1634,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06188# If
 --     the currently bound pipeline was created without a
@@ -1642,11 +1642,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -1655,37 +1655,37 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06189# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06190# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -1709,7 +1709,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1725,7 +1725,7 @@
 --     graphics pipeline was created with both the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic states enabled, then
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1733,7 +1733,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913# If the bound
 --     graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     dynamic state enabled, then
@@ -1761,7 +1761,7 @@
 --
 -- -   #VUID-vkCmdDrawIndexedIndirectCount-None-04879# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
 --     /must/ have been called in the current command buffer prior to this
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_shader_subgroup_extended_types.hs
@@ -60,9 +60,9 @@
     -- @shaderSubgroupExtendedTypes@ is a boolean specifying whether subgroup
     -- operations can use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit
     -- floating-point, and vectors of these types in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
     -- with
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroup scope>,
     -- if the implementation supports the types.
     shaderSubgroupExtendedTypes :: Bool }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_timeline_semaphore.hs
@@ -101,7 +101,7 @@
 -- Note
 --
 -- If a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission>
 -- command is pending execution, then the value returned by this command
 -- /may/ immediately be out of date.
 --
@@ -221,7 +221,7 @@
 -- after the @timeout@ has expired.
 --
 -- If device loss occurs (see
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>)
 -- before the timeout has expired, 'waitSemaphores' /must/ return in finite
 -- time with either 'Vulkan.Core10.Enums.Result.SUCCESS' or
 -- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'.
@@ -304,7 +304,7 @@
 --
 -- When 'signalSemaphore' is executed on the host, it defines and
 -- immediately executes a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 -- which sets the timeline semaphore to the given value.
 --
 -- The first synchronization scope is defined by the host execution model,
@@ -508,7 +508,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-timelineSemaphore timelineSemaphore>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-timelineSemaphore timelineSemaphore>
 --     feature is not enabled, @semaphoreType@ /must/ not equal
 --     'Vulkan.Core12.Enums.SemaphoreType.SEMAPHORE_TYPE_TIMELINE'
 --
@@ -838,7 +838,7 @@
     -- which does not differ from the current value of the semaphore or the
     -- value of any outstanding semaphore wait or signal operation on
     -- @semaphore@ by more than
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
     value :: Word64
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_uniform_buffer_standard_layout.hs
@@ -59,7 +59,7 @@
     -- @uniformBufferStandardLayout@ indicates that the implementation supports
     -- the same layouts for uniform buffers as for storage and other kinds of
     -- buffers. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Buffer Layout>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-resources-standard-layout Standard Buffer Layout>.
     uniformBufferStandardLayout :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs b/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
--- a/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
+++ b/src/Vulkan/Core12/Promoted_From_VK_KHR_vulkan_memory_model.hs
@@ -58,7 +58,7 @@
 data PhysicalDeviceVulkanMemoryModelFeatures = PhysicalDeviceVulkanMemoryModelFeatures
   { -- | #extension-features-vulkanMemoryModel# @vulkanMemoryModel@ indicates
     -- whether the Vulkan Memory Model is supported, as defined in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model Vulkan Memory Model>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-model Vulkan Memory Model>.
     -- This also indicates whether shader modules /can/ declare the
     -- @VulkanMemoryModel@ capability.
     vulkanMemoryModel :: Bool
@@ -71,7 +71,7 @@
   , -- | #extension-features-vulkanMemoryModelAvailabilityVisibilityChains#
     -- @vulkanMemoryModelAvailabilityVisibilityChains@ indicates whether the
     -- Vulkan Memory Model can use
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model-availability-visibility availability and visibility chains>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-model-availability-visibility availability and visibility chains>
     -- with more than one element.
     vulkanMemoryModelAvailabilityVisibilityChains :: Bool
   }
diff --git a/src/Vulkan/Core13.hs b/src/Vulkan/Core13.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13.hs
@@ -0,0 +1,875 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Core13"
+module Vulkan.Core13  ( pattern API_VERSION_1_3
+                      , PhysicalDeviceVulkan13Features(..)
+                      , PhysicalDeviceVulkan13Properties(..)
+                      , StructureType(..)
+                      , module Vulkan.Core13.Enums
+                      , module Vulkan.Core13.Handles
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_image_robustness
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_private_data
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr
+                      , module Vulkan.Core13.Promoted_From_VK_EXT_tooling_info
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_maintenance4
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_synchronization2
+                      , module Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory
+                      ) where
+import Vulkan.Core13.Enums
+import Vulkan.Core13.Handles
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2
+import Vulkan.Core13.Promoted_From_VK_EXT_image_robustness
+import Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block
+import Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control
+import Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data
+import Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation
+import Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control
+import Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment
+import Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr
+import Vulkan.Core13.Promoted_From_VK_EXT_tooling_info
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering
+import Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4
+import Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product
+import Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2
+import Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Version (pattern MAKE_API_VERSION)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+pattern API_VERSION_1_3 :: Word32
+pattern API_VERSION_1_3 = MAKE_API_VERSION 1 3 0
+
+
+-- | VkPhysicalDeviceVulkan13Features - Structure describing the Vulkan 1.3
+-- features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceVulkan13Features' 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. 'PhysicalDeviceVulkan13Features' /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_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceVulkan13Features = PhysicalDeviceVulkan13Features
+  { -- | #features-robustImageAccess# @robustImageAccess@ indicates whether image
+    -- accesses are tightly bounds-checked against the dimensions of the image
+    -- view.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-input-validation Invalid texels>
+    -- resulting from out of bounds image loads will be replaced as described
+    -- in
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>,
+    -- with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A
+    -- components based on the format.
+    robustImageAccess :: Bool
+  , -- | #features-inlineUniformBlock# @inlineUniformBlock@ indicates whether the
+    -- implementation supports inline uniform block descriptors. If this
+    -- feature is not enabled,
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+    -- /must/ not be used.
+    inlineUniformBlock :: Bool
+  , -- | #features-descriptorBindingInlineUniformBlockUpdateAfterBind#
+    -- @descriptorBindingInlineUniformBlockUpdateAfterBind@ indicates whether
+    -- the implementation supports updating inline uniform block descriptors
+    -- after a set is bound. If this feature is not enabled,
+    -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
+    -- /must/ not be used with
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'.
+    descriptorBindingInlineUniformBlockUpdateAfterBind :: Bool
+  , -- | #features-pipelineCreationCacheControl# @pipelineCreationCacheControl@
+    -- indicates that the implementation supports:
+    --
+    -- -   The following /can/ be used in @Vk*PipelineCreateInfo@::@flags@:
+    --
+    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
+    --
+    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
+    --
+    -- -   The following /can/ be used in
+    --     'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo'::@flags@:
+    --
+    --     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT'
+    pipelineCreationCacheControl :: Bool
+  , -- | #features-privateData# @privateData@ indicates whether the
+    -- implementation supports private data. See
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#private-data Private Data>.
+    privateData :: Bool
+  , -- | #features-shaderDemoteToHelperInvocation#
+    -- @shaderDemoteToHelperInvocation@ indicates whether the implementation
+    -- supports the SPIR-V @DemoteToHelperInvocationEXT@ capability.
+    shaderDemoteToHelperInvocation :: Bool
+  , -- | #features-shaderTerminateInvocation# @shaderTerminateInvocation@
+    -- specifies whether the implementation supports SPIR-V modules that use
+    -- the @SPV_KHR_terminate_invocation@ extension.
+    shaderTerminateInvocation :: Bool
+  , -- | #features-subgroupSizeControl# @subgroupSizeControl@ indicates whether
+    -- the implementation supports controlling shader subgroup sizes via the
+    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
+    -- flag and the
+    -- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PipelineShaderStageRequiredSubgroupSizeCreateInfo'
+    -- structure.
+    subgroupSizeControl :: Bool
+  , -- | #features-computeFullSubgroups# @computeFullSubgroups@ indicates whether
+    -- the implementation supports requiring full subgroups in compute shaders
+    -- via the
+    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'
+    -- flag.
+    computeFullSubgroups :: Bool
+  , -- | #features-synchronization2# @synchronization2@ indicates whether the
+    -- implementation supports the new set of synchronization commands
+    -- introduced in @VK_KHR_synchronization2@.
+    synchronization2 :: Bool
+  , -- | #features-textureCompressionASTC_HDR# @textureCompressionASTC_HDR@
+    -- indicates whether all of the ASTC HDR compressed texture formats are
+    -- supported. If this feature is enabled, then the
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
+    -- and
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+    -- features /must/ be supported in @optimalTilingFeatures@ for the
+    -- following formats:
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK'
+    --
+    -- To query for additional properties, or if the feature is not enabled,
+    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'
+    -- and
+    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'
+    -- /can/ be used to check for supported properties of individual formats as
+    -- normal.
+    textureCompressionASTC_HDR :: Bool
+  , -- | #features-shaderZeroInitializeWorkgroupMemory#
+    -- @shaderZeroInitializeWorkgroupMemory@ specifies whether the
+    -- implementation supports initializing a variable in Workgroup storage
+    -- class.
+    shaderZeroInitializeWorkgroupMemory :: Bool
+  , -- | #features-dynamicRendering# @dynamicRendering@ specifies that the
+    -- implementation supports dynamic render pass instances using the
+    -- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+    -- command.
+    dynamicRendering :: Bool
+  , -- | #features-shaderIntegerDotProduct# @shaderIntegerDotProduct@ specifies
+    -- whether shader modules /can/ declare the @DotProductInputAllKHR@,
+    -- @DotProductInput4x8BitKHR@, @DotProductInput4x8BitPackedKHR@ and
+    -- @DotProductKHR@ capabilities.
+    shaderIntegerDotProduct :: Bool
+  , -- | #features-maintenance4# @maintenance4@ indicates that the implementation
+    -- supports the following:
+    --
+    -- -   The application /may/ destroy a
+    --     'Vulkan.Core10.Handles.PipelineLayout' object immediately after
+    --     using it to create another object.
+    --
+    -- -   @LocalSizeId@ /can/ be used as an alternative to @LocalSize@ to
+    --     specify the local workgroup size with specialization constants.
+    --
+    -- -   Images created with identical creation parameters will always have
+    --     the same alignment requirements.
+    --
+    -- -   The size memory requirement of a buffer or image is never greater
+    --     than that of another buffer or image created with a greater or equal
+    --     size.
+    --
+    -- -   Push constants do not have to be initialized before they are
+    --     dynamically accessed.
+    --
+    -- -   The interface matching rules allow a larger output vector to match
+    --     with a smaller input vector, with additional values being discarded.
+    maintenance4 :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceVulkan13Features)
+#endif
+deriving instance Show PhysicalDeviceVulkan13Features
+
+instance ToCStruct PhysicalDeviceVulkan13Features where
+  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceVulkan13Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (robustImageAccess))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (inlineUniformBlock))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (descriptorBindingInlineUniformBlockUpdateAfterBind))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (pipelineCreationCacheControl))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (privateData))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (shaderDemoteToHelperInvocation))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (shaderTerminateInvocation))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (subgroupSizeControl))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (computeFullSubgroups))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (synchronization2))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_HDR))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (shaderZeroInitializeWorkgroupMemory))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (dynamicRendering))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (shaderIntegerDotProduct))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (maintenance4))
+    f
+  cStructSize = 80
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES)
+    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))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceVulkan13Features where
+  peekCStruct p = do
+    robustImageAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    inlineUniformBlock <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    descriptorBindingInlineUniformBlockUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    pipelineCreationCacheControl <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    privateData <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    shaderDemoteToHelperInvocation <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    shaderTerminateInvocation <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    subgroupSizeControl <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    computeFullSubgroups <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
+    synchronization2 <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
+    textureCompressionASTC_HDR <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    shaderZeroInitializeWorkgroupMemory <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    dynamicRendering <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    shaderIntegerDotProduct <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
+    maintenance4 <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
+    pure $ PhysicalDeviceVulkan13Features
+             (bool32ToBool robustImageAccess) (bool32ToBool inlineUniformBlock) (bool32ToBool descriptorBindingInlineUniformBlockUpdateAfterBind) (bool32ToBool pipelineCreationCacheControl) (bool32ToBool privateData) (bool32ToBool shaderDemoteToHelperInvocation) (bool32ToBool shaderTerminateInvocation) (bool32ToBool subgroupSizeControl) (bool32ToBool computeFullSubgroups) (bool32ToBool synchronization2) (bool32ToBool textureCompressionASTC_HDR) (bool32ToBool shaderZeroInitializeWorkgroupMemory) (bool32ToBool dynamicRendering) (bool32ToBool shaderIntegerDotProduct) (bool32ToBool maintenance4)
+
+instance Storable PhysicalDeviceVulkan13Features where
+  sizeOf ~_ = 80
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceVulkan13Features where
+  zero = PhysicalDeviceVulkan13Features
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceVulkan13Properties - Structure specifying physical
+-- device properties for functionality promoted to Vulkan 1.3
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceVulkan13Properties' structure is included in the
+-- @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- These properties correspond to Vulkan 1.3 functionality.
+--
+-- The members of 'PhysicalDeviceVulkan13Properties' /must/ have the same
+-- values as the corresponding members of
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block.PhysicalDeviceInlineUniformBlockProperties'
+-- and
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlProperties'.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceVulkan13Properties = PhysicalDeviceVulkan13Properties
+  { -- | #limits-minSubgroupSize# @minSubgroupSize@ is the minimum subgroup size
+    -- supported by this device. @minSubgroupSize@ is at least one if any of
+    -- the physical device’s queues support
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @minSubgroupSize@
+    -- is a power-of-two. @minSubgroupSize@ is less than or equal to
+    -- @maxSubgroupSize@. @minSubgroupSize@ is less than or equal to
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
+    minSubgroupSize :: Word32
+  , -- | #limits-maxSubgroupSize# @maxSubgroupSize@ is the maximum subgroup size
+    -- supported by this device. @maxSubgroupSize@ is at least one if any of
+    -- the physical device’s queues support
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @maxSubgroupSize@
+    -- is a power-of-two. @maxSubgroupSize@ is greater than or equal to
+    -- @minSubgroupSize@. @maxSubgroupSize@ is greater than or equal to
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
+    maxSubgroupSize :: Word32
+  , -- | #limits-maxComputeWorkgroupSubgroups# @maxComputeWorkgroupSubgroups@ is
+    -- the maximum number of subgroups supported by the implementation within a
+    -- workgroup.
+    maxComputeWorkgroupSubgroups :: Word32
+  , -- | #limits-requiredSubgroupSizeStages# @requiredSubgroupSizeStages@ is a
+    -- bitfield of what shader stages support having a required subgroup size
+    -- specified.
+    requiredSubgroupSizeStages :: ShaderStageFlags
+  , -- | #limits-maxInlineUniformBlockSize# @maxInlineUniformBlockSize@ is the
+    -- maximum size in bytes of an
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>
+    -- binding.
+    maxInlineUniformBlockSize :: Word32
+  , -- No documentation found for Nested "VkPhysicalDeviceVulkan13Properties" "maxPerStageDescriptorInlineUniformBlocks"
+    maxPerStageDescriptorInlineUniformBlocks :: Word32
+  , -- | #limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks#
+    -- @maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@ is similar to
+    -- @maxPerStageDescriptorInlineUniformBlocks@ but counts descriptor
+    -- bindings from descriptor sets created with or without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set.
+    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks :: Word32
+  , -- | #limits-maxDescriptorSetInlineUniformBlocks#
+    -- @maxDescriptorSetInlineUniformBlocks@ is the maximum number of inline
+    -- uniform block bindings that /can/ be included in descriptor bindings in
+    -- a pipeline layout across all pipeline shader stages and descriptor set
+    -- numbers. Descriptor bindings with a descriptor type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+    -- count against this limit. Only descriptor bindings in descriptor set
+    -- layouts created without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set count against this limit.
+    maxDescriptorSetInlineUniformBlocks :: Word32
+  , -- | #limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks#
+    -- @maxDescriptorSetUpdateAfterBindInlineUniformBlocks@ is similar to
+    -- @maxDescriptorSetInlineUniformBlocks@ but counts descriptor bindings
+    -- from descriptor sets created with or without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set.
+    maxDescriptorSetUpdateAfterBindInlineUniformBlocks :: Word32
+  , -- | #limits-maxInlineUniformTotalSize# @maxInlineUniformTotalSize@ is the
+    -- maximum total size in bytes of all inline uniform block bindings, across
+    -- all pipeline shader stages and descriptor set numbers, that /can/ be
+    -- included in a pipeline layout. Descriptor bindings with a descriptor
+    -- type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+    -- count against this limit.
+    maxInlineUniformTotalSize :: Word32
+  , -- | @integerDotProduct8BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct8BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct8BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct8BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct8BitMixedSignednessAccelerated@ is a boolean that will
+    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit mixed
+    -- signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct8BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct4x8BitPackedUnsignedAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit
+    -- unsigned dot product operations from operands packed into 32-bit
+    -- integers using the @OpUDotKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct4x8BitPackedUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct4x8BitPackedSignedAccelerated@ is a boolean that will
+    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
+    -- dot product operations from operands packed into 32-bit integers using
+    -- the @OpSDotKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct4x8BitPackedSignedAccelerated :: Bool
+  , -- | @integerDotProduct4x8BitPackedMixedSignednessAccelerated@ is a boolean
+    -- that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for
+    -- 8-bit mixed signedness dot product operations from operands packed into
+    -- 32-bit integers using the @OpSUDotKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct4x8BitPackedMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct16BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct16BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct16BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct16BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct16BitMixedSignednessAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit
+    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct16BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct32BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct32BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct32BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct32BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct32BitMixedSignednessAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit
+    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct32BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct64BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct64BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct64BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct64BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct64BitMixedSignednessAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit
+    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct64BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating8BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating8BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating8BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit unsigned accumulating saturating dot product
+    -- operations from operands packed into 32-bit integers using the
+    -- @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit signed accumulating saturating dot product operations
+    -- from operands packed into 32-bit integers using the @OpSDotAccSatKHR@
+    -- SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit mixed signedness accumulating saturating dot product
+    -- operations from operands packed into 32-bit integers using the
+    -- @OpSUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating16BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 16-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating16BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 16-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating16BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 16-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating32BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 32-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating32BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 32-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating32BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 32-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating64BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 64-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating64BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 64-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating64BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 64-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated :: Bool
+  , -- | #limits-storageTexelBufferOffsetAlignmentBytes#
+    -- @storageTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
+    -- sufficient for a storage texel buffer of any format. The value /must/ be
+    -- a power of two.
+    storageTexelBufferOffsetAlignmentBytes :: DeviceSize
+  , -- | #limits-storageTexelBufferOffsetSingleTexelAlignment#
+    -- @storageTexelBufferOffsetSingleTexelAlignment@ indicates whether single
+    -- texel alignment is sufficient for a storage texel buffer of any format.
+    -- The value /must/ be a power of two.
+    storageTexelBufferOffsetSingleTexelAlignment :: Bool
+  , -- | #limits-uniformTexelBufferOffsetAlignmentBytes#
+    -- @uniformTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
+    -- sufficient for a uniform texel buffer of any format. The value /must/ be
+    -- a power of two.
+    uniformTexelBufferOffsetAlignmentBytes :: DeviceSize
+  , -- | #limits-uniformTexelBufferOffsetSingleTexelAlignment#
+    -- @uniformTexelBufferOffsetSingleTexelAlignment@ indicates whether single
+    -- texel alignment is sufficient for a uniform texel buffer of any format.
+    -- The value /must/ be a power of two.
+    uniformTexelBufferOffsetSingleTexelAlignment :: Bool
+  , -- | #limits-maxBufferSize# @maxBufferSize@ is the maximum size
+    -- 'Vulkan.Core10.Handles.Buffer' that /can/ be created.
+    maxBufferSize :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceVulkan13Properties)
+#endif
+deriving instance Show PhysicalDeviceVulkan13Properties
+
+instance ToCStruct PhysicalDeviceVulkan13Properties where
+  withCStruct x f = allocaBytes 216 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceVulkan13Properties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (minSubgroupSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxSubgroupSize)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxComputeWorkgroupSubgroups)
+    poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (requiredSubgroupSizeStages)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxInlineUniformBlockSize)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (maxPerStageDescriptorInlineUniformBlocks)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (maxDescriptorSetInlineUniformBlocks)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInlineUniformBlocks)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (maxInlineUniformTotalSize)
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitUnsignedAccelerated))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitSignedAccelerated))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedUnsignedAccelerated))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedSignedAccelerated))
+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedMixedSignednessAccelerated))
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitUnsignedAccelerated))
+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitSignedAccelerated))
+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitUnsignedAccelerated))
+    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitSignedAccelerated))
+    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitUnsignedAccelerated))
+    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitSignedAccelerated))
+    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitUnsignedAccelerated))
+    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitSignedAccelerated))
+    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated))
+    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated))
+    poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated))
+    poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitUnsignedAccelerated))
+    poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitSignedAccelerated))
+    poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitUnsignedAccelerated))
+    poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitSignedAccelerated))
+    poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitUnsignedAccelerated))
+    poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitSignedAccelerated))
+    poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 176 :: Ptr DeviceSize)) (storageTexelBufferOffsetAlignmentBytes)
+    poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (storageTexelBufferOffsetSingleTexelAlignment))
+    poke ((p `plusPtr` 192 :: Ptr DeviceSize)) (uniformTexelBufferOffsetAlignmentBytes)
+    poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (uniformTexelBufferOffsetSingleTexelAlignment))
+    poke ((p `plusPtr` 208 :: Ptr DeviceSize)) (maxBufferSize)
+    f
+  cStructSize = 216
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 136 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 140 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 144 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 148 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 152 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 156 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 160 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 164 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 168 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 172 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 176 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 184 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 192 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 200 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 208 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceVulkan13Properties where
+  peekCStruct p = do
+    minSubgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxSubgroupSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxComputeWorkgroupSubgroups <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    requiredSubgroupSizeStages <- peek @ShaderStageFlags ((p `plusPtr` 28 :: Ptr ShaderStageFlags))
+    maxInlineUniformBlockSize <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    maxPerStageDescriptorInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    maxDescriptorSetInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    maxDescriptorSetUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    maxInlineUniformTotalSize <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    integerDotProduct8BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    integerDotProduct8BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    integerDotProduct8BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    integerDotProduct4x8BitPackedUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
+    integerDotProduct4x8BitPackedSignedAccelerated <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
+    integerDotProduct4x8BitPackedMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
+    integerDotProduct16BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
+    integerDotProduct16BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
+    integerDotProduct16BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
+    integerDotProduct32BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
+    integerDotProduct32BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
+    integerDotProduct32BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))
+    integerDotProduct64BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))
+    integerDotProduct64BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))
+    integerDotProduct64BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating8BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 136 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 140 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating16BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 144 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 148 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 152 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating32BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 156 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 160 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 164 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating64BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 168 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 172 :: Ptr Bool32))
+    storageTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 176 :: Ptr DeviceSize))
+    storageTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 184 :: Ptr Bool32))
+    uniformTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 192 :: Ptr DeviceSize))
+    uniformTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 200 :: Ptr Bool32))
+    maxBufferSize <- peek @DeviceSize ((p `plusPtr` 208 :: Ptr DeviceSize))
+    pure $ PhysicalDeviceVulkan13Properties
+             minSubgroupSize maxSubgroupSize maxComputeWorkgroupSubgroups requiredSubgroupSizeStages maxInlineUniformBlockSize maxPerStageDescriptorInlineUniformBlocks maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks maxDescriptorSetInlineUniformBlocks maxDescriptorSetUpdateAfterBindInlineUniformBlocks maxInlineUniformTotalSize (bool32ToBool integerDotProduct8BitUnsignedAccelerated) (bool32ToBool integerDotProduct8BitSignedAccelerated) (bool32ToBool integerDotProduct8BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct4x8BitPackedUnsignedAccelerated) (bool32ToBool integerDotProduct4x8BitPackedSignedAccelerated) (bool32ToBool integerDotProduct4x8BitPackedMixedSignednessAccelerated) (bool32ToBool integerDotProduct16BitUnsignedAccelerated) (bool32ToBool integerDotProduct16BitSignedAccelerated) (bool32ToBool integerDotProduct16BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct32BitUnsignedAccelerated) (bool32ToBool integerDotProduct32BitSignedAccelerated) (bool32ToBool integerDotProduct32BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct64BitUnsignedAccelerated) (bool32ToBool integerDotProduct64BitSignedAccelerated) (bool32ToBool integerDotProduct64BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated) storageTexelBufferOffsetAlignmentBytes (bool32ToBool storageTexelBufferOffsetSingleTexelAlignment) uniformTexelBufferOffsetAlignmentBytes (bool32ToBool uniformTexelBufferOffsetSingleTexelAlignment) maxBufferSize
+
+instance Storable PhysicalDeviceVulkan13Properties where
+  sizeOf ~_ = 216
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceVulkan13Properties where
+  zero = PhysicalDeviceVulkan13Properties
+           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
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core13.hs-boot b/src/Vulkan/Core13.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13.hs-boot
@@ -0,0 +1,25 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Core13"
+module Vulkan.Core13  ( PhysicalDeviceVulkan13Features
+                      , PhysicalDeviceVulkan13Properties
+                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceVulkan13Features
+
+instance ToCStruct PhysicalDeviceVulkan13Features
+instance Show PhysicalDeviceVulkan13Features
+
+instance FromCStruct PhysicalDeviceVulkan13Features
+
+
+data PhysicalDeviceVulkan13Properties
+
+instance ToCStruct PhysicalDeviceVulkan13Properties
+instance Show PhysicalDeviceVulkan13Properties
+
+instance FromCStruct PhysicalDeviceVulkan13Properties
+
diff --git a/src/Vulkan/Core13/Enums.hs b/src/Vulkan/Core13/Enums.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums.hs
@@ -0,0 +1,20 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Enums"
+module Vulkan.Core13.Enums  ( module Vulkan.Core13.Enums.AccessFlags2
+                            , module Vulkan.Core13.Enums.FormatFeatureFlags2
+                            , module Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits
+                            , module Vulkan.Core13.Enums.PipelineStageFlags2
+                            , module Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits
+                            , module Vulkan.Core13.Enums.RenderingFlagBits
+                            , module Vulkan.Core13.Enums.SubmitFlagBits
+                            , module Vulkan.Core13.Enums.ToolPurposeFlagBits
+                            ) where
+import Vulkan.Core13.Enums.AccessFlags2
+import Vulkan.Core13.Enums.FormatFeatureFlags2
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits
+import Vulkan.Core13.Enums.PipelineStageFlags2
+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits
+import Vulkan.Core13.Enums.RenderingFlagBits
+import Vulkan.Core13.Enums.SubmitFlagBits
+import Vulkan.Core13.Enums.ToolPurposeFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/AccessFlags2.hs b/src/Vulkan/Core13/Enums/AccessFlags2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/AccessFlags2.hs
@@ -0,0 +1,479 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "AccessFlags2"
+module Vulkan.Core13.Enums.AccessFlags2  ( pattern ACCESS_2_NONE_KHR
+                                         , pattern ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR
+                                         , pattern ACCESS_2_INDEX_READ_BIT_KHR
+                                         , pattern ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR
+                                         , pattern ACCESS_2_UNIFORM_READ_BIT_KHR
+                                         , pattern ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR
+                                         , pattern ACCESS_2_SHADER_READ_BIT_KHR
+                                         , pattern ACCESS_2_SHADER_WRITE_BIT_KHR
+                                         , pattern ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR
+                                         , pattern ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR
+                                         , pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR
+                                         , pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR
+                                         , pattern ACCESS_2_TRANSFER_READ_BIT_KHR
+                                         , pattern ACCESS_2_TRANSFER_WRITE_BIT_KHR
+                                         , pattern ACCESS_2_HOST_READ_BIT_KHR
+                                         , pattern ACCESS_2_HOST_WRITE_BIT_KHR
+                                         , pattern ACCESS_2_MEMORY_READ_BIT_KHR
+                                         , pattern ACCESS_2_MEMORY_WRITE_BIT_KHR
+                                         , pattern ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR
+                                         , pattern ACCESS_2_SHADER_STORAGE_READ_BIT_KHR
+                                         , pattern ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR
+                                         , AccessFlags2
+                                         , AccessFlagBits2( ACCESS_2_NONE
+                                                          , ACCESS_2_INDIRECT_COMMAND_READ_BIT
+                                                          , ACCESS_2_INDEX_READ_BIT
+                                                          , ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
+                                                          , ACCESS_2_UNIFORM_READ_BIT
+                                                          , ACCESS_2_INPUT_ATTACHMENT_READ_BIT
+                                                          , ACCESS_2_SHADER_READ_BIT
+                                                          , ACCESS_2_SHADER_WRITE_BIT
+                                                          , ACCESS_2_COLOR_ATTACHMENT_READ_BIT
+                                                          , ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
+                                                          , ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
+                                                          , ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
+                                                          , ACCESS_2_TRANSFER_READ_BIT
+                                                          , ACCESS_2_TRANSFER_WRITE_BIT
+                                                          , ACCESS_2_HOST_READ_BIT
+                                                          , ACCESS_2_HOST_WRITE_BIT
+                                                          , ACCESS_2_MEMORY_READ_BIT
+                                                          , ACCESS_2_MEMORY_WRITE_BIT
+                                                          , ACCESS_2_SHADER_SAMPLED_READ_BIT
+                                                          , ACCESS_2_SHADER_STORAGE_READ_BIT
+                                                          , ACCESS_2_SHADER_STORAGE_WRITE_BIT
+                                                          , ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
+                                                          , ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
+                                                          , ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
+                                                          , ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
+                                                          , ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
+                                                          , ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
+                                                          , ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
+                                                          , ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
+                                                          , ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
+                                                          , ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
+                                                          , ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
+                                                          , ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
+                                                          , ..
+                                                          )
+                                         ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags64)
+-- No documentation found for TopLevel "VK_ACCESS_2_NONE_KHR"
+pattern ACCESS_2_NONE_KHR = ACCESS_2_NONE
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR"
+pattern ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = ACCESS_2_INDIRECT_COMMAND_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_INDEX_READ_BIT_KHR"
+pattern ACCESS_2_INDEX_READ_BIT_KHR = ACCESS_2_INDEX_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR"
+pattern ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_UNIFORM_READ_BIT_KHR"
+pattern ACCESS_2_UNIFORM_READ_BIT_KHR = ACCESS_2_UNIFORM_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR"
+pattern ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = ACCESS_2_INPUT_ATTACHMENT_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_SHADER_READ_BIT_KHR"
+pattern ACCESS_2_SHADER_READ_BIT_KHR = ACCESS_2_SHADER_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_SHADER_WRITE_BIT_KHR"
+pattern ACCESS_2_SHADER_WRITE_BIT_KHR = ACCESS_2_SHADER_WRITE_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR"
+pattern ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = ACCESS_2_COLOR_ATTACHMENT_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR"
+pattern ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR"
+pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR"
+pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_TRANSFER_READ_BIT_KHR"
+pattern ACCESS_2_TRANSFER_READ_BIT_KHR = ACCESS_2_TRANSFER_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR"
+pattern ACCESS_2_TRANSFER_WRITE_BIT_KHR = ACCESS_2_TRANSFER_WRITE_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_HOST_READ_BIT_KHR"
+pattern ACCESS_2_HOST_READ_BIT_KHR = ACCESS_2_HOST_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_HOST_WRITE_BIT_KHR"
+pattern ACCESS_2_HOST_WRITE_BIT_KHR = ACCESS_2_HOST_WRITE_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_MEMORY_READ_BIT_KHR"
+pattern ACCESS_2_MEMORY_READ_BIT_KHR = ACCESS_2_MEMORY_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_MEMORY_WRITE_BIT_KHR"
+pattern ACCESS_2_MEMORY_WRITE_BIT_KHR = ACCESS_2_MEMORY_WRITE_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR"
+pattern ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = ACCESS_2_SHADER_SAMPLED_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR"
+pattern ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = ACCESS_2_SHADER_STORAGE_READ_BIT
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR"
+pattern ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = ACCESS_2_SHADER_STORAGE_WRITE_BIT
+
+
+type AccessFlags2 = AccessFlagBits2
+
+-- | VkAccessFlagBits2 - Access flags for VkAccessFlags2
+--
+-- = Description
+--
+-- Note
+--
+-- In situations where an application wishes to select all access types for
+-- a given set of pipeline stages, 'ACCESS_2_MEMORY_READ_BIT' or
+-- 'ACCESS_2_MEMORY_WRITE_BIT' can be used. This is particularly useful
+-- when specifying stages that only have a single access type.
+--
+-- Note
+--
+-- The 'AccessFlags2' bitmask goes beyond the 31 individual bit flags
+-- allowable within a C99 enum, which is how
+-- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' is defined. The
+-- first 31 values are common to both, and are interchangeable.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>
+newtype AccessFlagBits2 = AccessFlagBits2 Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'ACCESS_2_NONE' specifies no accesses.
+pattern ACCESS_2_NONE                               = AccessFlagBits2 0x0000000000000000
+-- | 'ACCESS_2_INDIRECT_COMMAND_READ_BIT' specifies read access to command
+-- data read from indirect buffers as part of an indirect build, trace,
+-- drawing or dispatch command. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT'
+-- pipeline stage.
+pattern ACCESS_2_INDIRECT_COMMAND_READ_BIT          = AccessFlagBits2 0x0000000000000001
+-- | 'ACCESS_2_INDEX_READ_BIT' specifies read access to an index buffer as
+-- part of an indexed drawing command, bound by
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'. Such access
+-- occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT'
+-- pipeline stage.
+pattern ACCESS_2_INDEX_READ_BIT                     = AccessFlagBits2 0x0000000000000002
+-- | 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT' specifies read access to a vertex
+-- buffer as part of a drawing command, bound by
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'. Such access
+-- occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT'
+-- pipeline stage.
+pattern ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT          = AccessFlagBits2 0x0000000000000004
+-- | 'ACCESS_2_UNIFORM_READ_BIT' specifies read access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>
+-- in any shader pipeline stage.
+pattern ACCESS_2_UNIFORM_READ_BIT                   = AccessFlagBits2 0x0000000000000008
+-- | 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT' specifies read access to an
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass input attachment>
+-- within a render pass during subpass shading or fragment shading. Such
+-- access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+-- or
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+-- pipeline stage.
+pattern ACCESS_2_INPUT_ATTACHMENT_READ_BIT          = AccessFlagBits2 0x0000000000000010
+-- | 'ACCESS_2_SHADER_READ_BIT' specifies read access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table shader binding table>
+-- in any shader pipeline. In addition, it is equivalent to the logical OR
+-- of:
+--
+-- -   'ACCESS_2_UNIFORM_READ_BIT'
+--
+-- -   'ACCESS_2_SHADER_SAMPLED_READ_BIT'
+--
+-- -   'ACCESS_2_SHADER_STORAGE_READ_BIT'
+pattern ACCESS_2_SHADER_READ_BIT                    = AccessFlagBits2 0x0000000000000020
+-- | 'ACCESS_2_SHADER_WRITE_BIT' is equivalent to
+-- 'ACCESS_2_SHADER_STORAGE_WRITE_BIT'.
+pattern ACCESS_2_SHADER_WRITE_BIT                   = AccessFlagBits2 0x0000000000000040
+-- | 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT' specifies read access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachment>,
+-- such as via
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending blending>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-logicop logic operations>,
+-- or via certain
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
+-- It does not include
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
+-- Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- pipeline stage.
+pattern ACCESS_2_COLOR_ATTACHMENT_READ_BIT          = AccessFlagBits2 0x0000000000000080
+-- | 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT' specifies write access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color, resolve, or depth\/stencil resolve attachment>
+-- during a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass render pass>
+-- or via certain
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
+-- Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- pipeline stage.
+pattern ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT         = AccessFlagBits2 0x0000000000000100
+-- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT' specifies read access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
+-- via
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
+-- or via certain
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
+-- Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT'
+-- or
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT'
+-- pipeline stages.
+pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT  = AccessFlagBits2 0x0000000000000200
+-- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT' specifies write access to
+-- a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
+-- via
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
+-- or via certain
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
+-- Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT'
+-- or
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT'
+-- pipeline stages.
+pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = AccessFlagBits2 0x0000000000000400
+-- | 'ACCESS_2_TRANSFER_READ_BIT' specifies read access to an image or buffer
+-- in a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy>
+-- operation. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT', or
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT'
+-- pipeline stages.
+pattern ACCESS_2_TRANSFER_READ_BIT                  = AccessFlagBits2 0x0000000000000800
+-- | 'ACCESS_2_TRANSFER_WRITE_BIT' specifies write access to an image or
+-- buffer in a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy>
+-- operation. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT', or
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT'
+-- pipeline stages.
+pattern ACCESS_2_TRANSFER_WRITE_BIT                 = AccessFlagBits2 0x0000000000001000
+-- | 'ACCESS_2_HOST_READ_BIT' specifies read access by a host operation.
+-- Accesses of this type are not performed through a resource, but directly
+-- on memory. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+-- pipeline stage.
+pattern ACCESS_2_HOST_READ_BIT                      = AccessFlagBits2 0x0000000000002000
+-- | 'ACCESS_2_HOST_WRITE_BIT' specifies write access by a host operation.
+-- Accesses of this type are not performed through a resource, but directly
+-- on memory. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+-- pipeline stage.
+pattern ACCESS_2_HOST_WRITE_BIT                     = AccessFlagBits2 0x0000000000004000
+-- | 'ACCESS_2_MEMORY_READ_BIT' specifies all read accesses. It is always
+-- valid in any access mask, and is treated as equivalent to setting all
+-- @READ@ access flags that are valid where it is used.
+pattern ACCESS_2_MEMORY_READ_BIT                    = AccessFlagBits2 0x0000000000008000
+-- | 'ACCESS_2_MEMORY_WRITE_BIT' specifies all write accesses. It is always
+-- valid in any access mask, and is treated as equivalent to setting all
+-- @WRITE@ access flags that are valid where it is used.
+pattern ACCESS_2_MEMORY_WRITE_BIT                   = AccessFlagBits2 0x0000000000010000
+-- | 'ACCESS_2_SHADER_SAMPLED_READ_BIT' specifies read access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>
+-- in any shader pipeline stage.
+pattern ACCESS_2_SHADER_SAMPLED_READ_BIT            = AccessFlagBits2 0x0000000100000000
+-- | 'ACCESS_2_SHADER_STORAGE_READ_BIT' specifies read access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
+-- in any shader pipeline stage.
+pattern ACCESS_2_SHADER_STORAGE_READ_BIT            = AccessFlagBits2 0x0000000200000000
+-- | 'ACCESS_2_SHADER_STORAGE_WRITE_BIT' specifies write access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
+-- in any shader pipeline stage.
+pattern ACCESS_2_SHADER_STORAGE_WRITE_BIT           = AccessFlagBits2 0x0000000400000000
+-- | 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI' specifies read access to a
+-- invocation mask image in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+-- pipeline stage.
+pattern ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI    = AccessFlagBits2 0x0000008000000000
+-- | 'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read
+-- access to
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass color attachments>,
+-- including
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
+-- Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+-- pipeline stage.
+pattern ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits2 0x0000000000080000
+-- | 'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
+-- during dynamic
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations>.
+-- Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+-- pipeline stage.
+pattern ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT  = AccessFlagBits2 0x0000000001000000
+-- | 'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access
+-- to an acceleration structure or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
+-- as part of a build or copy command. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- pipeline stage.
+pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = AccessFlagBits2 0x0000000000400000
+-- | 'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR' specifies read access to
+-- an acceleration structure as part of a trace, build, or copy command, or
+-- to an
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
+-- as part of a build command. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+-- pipeline stage or
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+-- pipeline stage.
+pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = AccessFlagBits2 0x0000000000200000
+-- | 'ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' specifies read
+-- access to a fragment shading rate attachment during rasterization. Such
+-- access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+-- pipeline stage.
+pattern ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = AccessFlagBits2 0x0000000000800000
+-- | 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV' specifies writes to the
+-- target command buffer preprocess outputs. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+-- pipeline stage.
+pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV    = AccessFlagBits2 0x0000000000040000
+-- | 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV' specifies reads from buffer
+-- inputs to
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
+-- Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+-- pipeline stage.
+pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV     = AccessFlagBits2 0x0000000000020000
+-- | 'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to a
+-- predicate as part of conditional rendering. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+-- pipeline stage.
+pattern ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = AccessFlagBits2 0x0000000000100000
+-- | 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' specifies write
+-- access to a transform feedback counter buffer which is written when
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'
+-- executes. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+-- pipeline stage.
+pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = AccessFlagBits2 0x0000000008000000
+-- | 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' specifies read access
+-- to a transform feedback counter buffer which is read when
+-- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'
+-- executes. Such access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+-- pipeline stage.
+pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = AccessFlagBits2 0x0000000004000000
+-- | 'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT' specifies write access to a
+-- transform feedback buffer made when transform feedback is active. Such
+-- access occurs in the
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+-- pipeline stage.
+pattern ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT   = AccessFlagBits2 0x0000000002000000
+
+conNameAccessFlagBits2 :: String
+conNameAccessFlagBits2 = "AccessFlagBits2"
+
+enumPrefixAccessFlagBits2 :: String
+enumPrefixAccessFlagBits2 = "ACCESS_2_"
+
+showTableAccessFlagBits2 :: [(AccessFlagBits2, String)]
+showTableAccessFlagBits2 =
+  [ (ACCESS_2_NONE                              , "NONE")
+  , (ACCESS_2_INDIRECT_COMMAND_READ_BIT         , "INDIRECT_COMMAND_READ_BIT")
+  , (ACCESS_2_INDEX_READ_BIT                    , "INDEX_READ_BIT")
+  , (ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT         , "VERTEX_ATTRIBUTE_READ_BIT")
+  , (ACCESS_2_UNIFORM_READ_BIT                  , "UNIFORM_READ_BIT")
+  , (ACCESS_2_INPUT_ATTACHMENT_READ_BIT         , "INPUT_ATTACHMENT_READ_BIT")
+  , (ACCESS_2_SHADER_READ_BIT                   , "SHADER_READ_BIT")
+  , (ACCESS_2_SHADER_WRITE_BIT                  , "SHADER_WRITE_BIT")
+  , (ACCESS_2_COLOR_ATTACHMENT_READ_BIT         , "COLOR_ATTACHMENT_READ_BIT")
+  , (ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT        , "COLOR_ATTACHMENT_WRITE_BIT")
+  , (ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT , "DEPTH_STENCIL_ATTACHMENT_READ_BIT")
+  , (ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT, "DEPTH_STENCIL_ATTACHMENT_WRITE_BIT")
+  , (ACCESS_2_TRANSFER_READ_BIT                 , "TRANSFER_READ_BIT")
+  , (ACCESS_2_TRANSFER_WRITE_BIT                , "TRANSFER_WRITE_BIT")
+  , (ACCESS_2_HOST_READ_BIT                     , "HOST_READ_BIT")
+  , (ACCESS_2_HOST_WRITE_BIT                    , "HOST_WRITE_BIT")
+  , (ACCESS_2_MEMORY_READ_BIT                   , "MEMORY_READ_BIT")
+  , (ACCESS_2_MEMORY_WRITE_BIT                  , "MEMORY_WRITE_BIT")
+  , (ACCESS_2_SHADER_SAMPLED_READ_BIT           , "SHADER_SAMPLED_READ_BIT")
+  , (ACCESS_2_SHADER_STORAGE_READ_BIT           , "SHADER_STORAGE_READ_BIT")
+  , (ACCESS_2_SHADER_STORAGE_WRITE_BIT          , "SHADER_STORAGE_WRITE_BIT")
+  , (ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI   , "INVOCATION_MASK_READ_BIT_HUAWEI")
+  , (ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, "COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT")
+  , (ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT , "FRAGMENT_DENSITY_MAP_READ_BIT_EXT")
+  , (ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, "ACCELERATION_STRUCTURE_WRITE_BIT_KHR")
+  , (ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, "ACCELERATION_STRUCTURE_READ_BIT_KHR")
+  , (ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR")
+  , (ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV   , "COMMAND_PREPROCESS_WRITE_BIT_NV")
+  , (ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV    , "COMMAND_PREPROCESS_READ_BIT_NV")
+  , (ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, "CONDITIONAL_RENDERING_READ_BIT_EXT")
+  , (ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT")
+  , (ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT")
+  , (ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT  , "TRANSFORM_FEEDBACK_WRITE_BIT_EXT")
+  ]
+
+instance Show AccessFlagBits2 where
+  showsPrec = enumShowsPrec enumPrefixAccessFlagBits2
+                            showTableAccessFlagBits2
+                            conNameAccessFlagBits2
+                            (\(AccessFlagBits2 x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read AccessFlagBits2 where
+  readPrec = enumReadPrec enumPrefixAccessFlagBits2 showTableAccessFlagBits2 conNameAccessFlagBits2 AccessFlagBits2
+
diff --git a/src/Vulkan/Core13/Enums/AccessFlags2.hs-boot b/src/Vulkan/Core13/Enums/AccessFlags2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/AccessFlags2.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "AccessFlags2"
+module Vulkan.Core13.Enums.AccessFlags2  ( AccessFlags2
+                                         , AccessFlagBits2
+                                         ) where
+
+
+
+type AccessFlags2 = AccessFlagBits2
+
+data AccessFlagBits2
+
diff --git a/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs
@@ -0,0 +1,691 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "FormatFeatureFlags2"
+module Vulkan.Core13.Enums.FormatFeatureFlags2  ( pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_BLIT_DST_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
+                                                , pattern FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_DISJOINT_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR
+                                                , pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR
+                                                , FormatFeatureFlags2
+                                                , FormatFeatureFlagBits2( FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
+                                                                        , FORMAT_FEATURE_2_STORAGE_IMAGE_BIT
+                                                                        , FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT
+                                                                        , FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT
+                                                                        , FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT
+                                                                        , FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
+                                                                        , FORMAT_FEATURE_2_VERTEX_BUFFER_BIT
+                                                                        , FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT
+                                                                        , FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT
+                                                                        , FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT
+                                                                        , FORMAT_FEATURE_2_BLIT_SRC_BIT
+                                                                        , FORMAT_FEATURE_2_BLIT_DST_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT
+                                                                        , FORMAT_FEATURE_2_TRANSFER_SRC_BIT
+                                                                        , FORMAT_FEATURE_2_TRANSFER_DST_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT
+                                                                        , FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+                                                                        , FORMAT_FEATURE_2_DISJOINT_BIT
+                                                                        , FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT
+                                                                        , FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
+                                                                        , FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
+                                                                        , FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
+                                                                        , FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
+                                                                        , FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+                                                                        , FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT
+                                                                        , FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
+                                                                        , ..
+                                                                        )
+                                                ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags64)
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR"
+pattern FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = FORMAT_FEATURE_2_STORAGE_IMAGE_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR"
+pattern FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR"
+pattern FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR"
+pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR"
+pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR"
+pattern FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = FORMAT_FEATURE_2_VERTEX_BUFFER_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR"
+pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR"
+pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR"
+pattern FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR"
+pattern FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = FORMAT_FEATURE_2_BLIT_SRC_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR"
+pattern FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = FORMAT_FEATURE_2_BLIT_DST_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR"
+pattern FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = FORMAT_FEATURE_2_TRANSFER_SRC_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR"
+pattern FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = FORMAT_FEATURE_2_TRANSFER_DST_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR"
+pattern FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR"
+pattern FORMAT_FEATURE_2_DISJOINT_BIT_KHR = FORMAT_FEATURE_2_DISJOINT_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR"
+pattern FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR"
+pattern FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR"
+pattern FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
+
+
+-- No documentation found for TopLevel "VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR"
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
+
+
+type FormatFeatureFlags2 = FormatFeatureFlagBits2
+
+-- | VkFormatFeatureFlagBits2 - Bitmask specifying features supported by a
+-- buffer
+--
+-- = Description
+--
+-- The following bits /may/ be set in @linearTilingFeatures@ and
+-- @optimalTilingFeatures@, specifying that the features are supported by
+-- <VkImage.html images> or <VkImageView.html image views> or
+-- <VkSamplerYcbcrConversion.html sampler Y′CBCR conversion objects>
+-- created with the queried
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'::@format@:
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT' specifies that an image view
+--     /can/ be
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+--
+-- -   'FORMAT_FEATURE_2_STORAGE_IMAGE_BIT' specifies that an image view
+--     /can/ be used as a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+--
+-- -   'FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image
+--     view /can/ be used as storage image that supports atomic operations.
+--
+-- -   'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT' specifies that an image view
+--     /can/ be used as a framebuffer color attachment and as an input
+--     attachment.
+--
+-- -   'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT' specifies that an
+--     image view /can/ be used as a framebuffer color attachment that
+--     supports blending and as an input attachment.
+--
+-- -   'FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that an
+--     image view /can/ be used as a framebuffer depth\/stencil attachment
+--     and as an input attachment.
+--
+-- -   'FORMAT_FEATURE_2_BLIT_SRC_BIT' specifies that an image /can/ be
+--     used as @srcImage@ for the
+--     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+--
+-- -   'FORMAT_FEATURE_2_BLIT_DST_BIT' specifies that an image /can/ be
+--     used as @dstImage@ for the
+--     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if
+--     'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT' is also set, an image view
+--     /can/ be used with a sampler that has either of @magFilter@ or
+--     @minFilter@ set to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', or
+--     @mipmapMode@ set to
+--     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'.
+--     If 'FORMAT_FEATURE_2_BLIT_SRC_BIT' is also set, an image can be used
+--     as the @srcImage@ to
+--     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a @filter@
+--     of 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/ only
+--     be exposed for formats that also support the
+--     'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT' or
+--     'FORMAT_FEATURE_2_BLIT_SRC_BIT'.
+--
+--     If the format being queried is a depth\/stencil format, this bit
+--     only specifies that the depth aspect (not the stencil aspect) of an
+--     image of this format supports linear filtering. Where depth
+--     comparison is supported it /may/ be linear filtered whether this bit
+--     is present or not, but where this bit is not present the filtered
+--     value /may/ be computed in an implementation-dependent manner which
+--     differs from the normal rules of linear filtering. The resulting
+--     value /must/ be in the range [0,1] and /should/ be proportional to,
+--     or a weighted average of, the number of comparison passes or
+--     failures.
+--
+-- -   'FORMAT_FEATURE_2_TRANSFER_SRC_BIT' specifies that an image /can/ be
+--     used as a source image for
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
+--
+-- -   'FORMAT_FEATURE_2_TRANSFER_DST_BIT' specifies that an image /can/ be
+--     used as a destination image for
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT' specifies
+--     'Vulkan.Core10.Handles.Image' /can/ be used as a sampled image with
+--     a min or max
+--     'Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'.
+--     This bit /must/ only be exposed for formats that also support the
+--     'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT'.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT' specifies that
+--     'Vulkan.Core10.Handles.Image' /can/ be used with a sampler that has
+--     either of @magFilter@ or @minFilter@ set to
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', or be the
+--     source image for a blit with @filter@ set to
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'. This bit
+--     /must/ only be exposed for formats that also support the
+--     'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT'. If the format being queried is
+--     a depth\/stencil format, this only specifies that the depth aspect
+--     is cubic filterable.
+--
+-- -   'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an
+--     application /can/ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     using this format as a source, and that an image of this format
+--     /can/ be used with a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
+--     @xChromaOffset@ and\/or @yChromaOffset@ of
+--     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'.
+--     Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be
+--     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.
+--     If a format does not incorporate chroma downsampling (it is not a
+--     “422” or “420” format) but the implementation supports sampler
+--     Y′CBCR conversion for this format, the implementation /must/ set
+--     'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT'.
+--
+-- -   'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT' specifies that an
+--     application /can/ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     using this format as a source, and that an image of this format
+--     /can/ be used with a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
+--     @xChromaOffset@ and\/or @yChromaOffset@ of
+--     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.
+--     Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be
+--     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'. If
+--     neither 'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT' nor
+--     'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the
+--     application /must/ not define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     using this format as a source.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'
+--     specifies that an application /can/ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+--     using this format as a source with @chromaFilter@ set to
+--     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'
+--     specifies that the format can have different chroma, min, and mag
+--     filters.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
+--     specifies that reconstruction is explicit, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
+--     If this bit is not present, reconstruction is implicit by default.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'
+--     specifies that reconstruction /can/ be forcibly made explicit by
+--     setting
+--     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@
+--     to 'Vulkan.Core10.FundamentalTypes.TRUE'. If the format being
+--     queried supports
+--     'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
+--     it /must/ also support
+--     'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.
+--
+-- -   'FORMAT_FEATURE_2_DISJOINT_BIT' specifies that a multi-planar image
+--     /can/ have the
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
+--     set during image creation. An implementation /must/ not set
+--     'FORMAT_FEATURE_2_DISJOINT_BIT' for /single-plane formats/.
+--
+-- -   'FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an
+--     image view /can/ be used as a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+--
+-- -   'FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     specifies that an image view /can/ be used as a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+--     An implementation /must/ not set this feature for formats with
+--     numeric type other than @*UINT@, or set it as a buffer feature.
+--
+-- -   'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that
+--     image views created with this format /can/ be used as
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
+--     for read operations without specifying a format.
+--
+-- -   'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that
+--     image views created with this format /can/ be used as
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
+--     for write operations without specifying a format.
+--
+-- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' specifies that
+--     image views created with this format /can/ be used for depth
+--     comparison performed by @OpImage*Dref@ instructions.
+--
+-- -   'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
+--     format is supported as a renderable
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color Attachment>.
+--     This bit will be set for renderable color formats in the
+--     @linearTilingFeatures@. This /must/ not be set in the
+--     @optimalTilingFeatures@ or @bufferFeatures@ members.
+--
+-- The following bits /may/ be set in @bufferFeatures@, specifying that the
+-- features are supported by <VkBuffer.html buffers> or
+-- <VkBufferView.html buffer views> created with the queried
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'::@format@:
+--
+-- -   'FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT' specifies that the
+--     format /can/ be used to create a buffer view that /can/ be bound to
+--     a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+--     descriptor.
+--
+-- -   'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT' specifies that the
+--     format /can/ be used to create a buffer view that /can/ be bound to
+--     a
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     descriptor.
+--
+-- -   'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' specifies that
+--     atomic operations are supported on
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+--     with this format.
+--
+-- -   'FORMAT_FEATURE_2_VERTEX_BUFFER_BIT' specifies that the format /can/
+--     be used as a vertex attribute format
+--     ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).
+--
+-- -   'FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+--     specifies that the format /can/ be used as the vertex format when
+--     creating an
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure>
+--     ('Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@).
+--     This format /can/ also be used as the vertex format in host memory
+--     when doing
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     builds.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>
+newtype FormatFeatureFlagBits2 = FormatFeatureFlagBits2 Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT' specifies that an image view /can/
+-- be
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT               = FormatFeatureFlagBits2 0x0000000000000001
+-- | 'FORMAT_FEATURE_2_STORAGE_IMAGE_BIT' specifies that an image view /can/
+-- be used as a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
+pattern FORMAT_FEATURE_2_STORAGE_IMAGE_BIT               = FormatFeatureFlagBits2 0x0000000000000002
+-- | 'FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT' specifies that an image view
+-- /can/ be used as storage image that supports atomic operations.
+pattern FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT        = FormatFeatureFlagBits2 0x0000000000000004
+-- | 'FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT' specifies that the format
+-- /can/ be used to create a buffer view that /can/ be bound to a
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
+-- descriptor.
+pattern FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT        = FormatFeatureFlagBits2 0x0000000000000008
+-- | 'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT' specifies that the format
+-- /can/ be used to create a buffer view that /can/ be bound to a
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+-- descriptor.
+pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT        = FormatFeatureFlagBits2 0x0000000000000010
+-- | 'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT' specifies that atomic
+-- operations are supported on
+-- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
+-- with this format.
+pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = FormatFeatureFlagBits2 0x0000000000000020
+-- | 'FORMAT_FEATURE_2_VERTEX_BUFFER_BIT' specifies that the format /can/ be
+-- used as a vertex attribute format
+-- ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).
+pattern FORMAT_FEATURE_2_VERTEX_BUFFER_BIT               = FormatFeatureFlagBits2 0x0000000000000040
+-- | 'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT' specifies that an image view
+-- /can/ be used as a framebuffer color attachment and as an input
+-- attachment.
+pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT            = FormatFeatureFlagBits2 0x0000000000000080
+-- | 'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT' specifies that an image
+-- view /can/ be used as a framebuffer color attachment that supports
+-- blending and as an input attachment.
+pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT      = FormatFeatureFlagBits2 0x0000000000000100
+-- | 'FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT' specifies that an image
+-- view /can/ be used as a framebuffer depth\/stencil attachment and as an
+-- input attachment.
+pattern FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT    = FormatFeatureFlagBits2 0x0000000000000200
+-- | 'FORMAT_FEATURE_2_BLIT_SRC_BIT' specifies that an image /can/ be used as
+-- @srcImage@ for the
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+pattern FORMAT_FEATURE_2_BLIT_SRC_BIT                    = FormatFeatureFlagBits2 0x0000000000000400
+-- | 'FORMAT_FEATURE_2_BLIT_DST_BIT' specifies that an image /can/ be used as
+-- @dstImage@ for the
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
+pattern FORMAT_FEATURE_2_BLIT_DST_BIT                    = FormatFeatureFlagBits2 0x0000000000000800
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT' specifies that if
+-- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT' is also set, an image view /can/ be
+-- used with a sampler that has either of @magFilter@ or @minFilter@ set to
+-- 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', or @mipmapMode@ set to
+-- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'. If
+-- 'FORMAT_FEATURE_2_BLIT_SRC_BIT' is also set, an image can be used as the
+-- @srcImage@ to 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR'
+-- and 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a @filter@
+-- of 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/ only be
+-- exposed for formats that also support the
+-- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT' or 'FORMAT_FEATURE_2_BLIT_SRC_BIT'.
+--
+-- If the format being queried is a depth\/stencil format, this bit only
+-- specifies that the depth aspect (not the stencil aspect) of an image of
+-- this format supports linear filtering. Where depth comparison is
+-- supported it /may/ be linear filtered whether this bit is present or
+-- not, but where this bit is not present the filtered value /may/ be
+-- computed in an implementation-dependent manner which differs from the
+-- normal rules of linear filtering. The resulting value /must/ be in the
+-- range [0,1] and /should/ be proportional to, or a weighted average of,
+-- the number of comparison passes or failures.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = FormatFeatureFlagBits2 0x0000000000001000
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT' specifies that
+-- 'Vulkan.Core10.Handles.Image' /can/ be used with a sampler that has
+-- either of @magFilter@ or @minFilter@ set to
+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', or be the
+-- source image for a blit with @filter@ set to
+-- 'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'. This bit
+-- /must/ only be exposed for formats that also support the
+-- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT'. If the format being queried is a
+-- depth\/stencil format, this only specifies that the depth aspect is
+-- cubic filterable.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT  = FormatFeatureFlagBits2 0x0000000000002000
+-- | 'FORMAT_FEATURE_2_TRANSFER_SRC_BIT' specifies that an image /can/ be
+-- used as a source image for
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>.
+pattern FORMAT_FEATURE_2_TRANSFER_SRC_BIT                = FormatFeatureFlagBits2 0x0000000000004000
+-- | 'FORMAT_FEATURE_2_TRANSFER_DST_BIT' specifies that an image /can/ be
+-- used as a destination image for
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>.
+pattern FORMAT_FEATURE_2_TRANSFER_DST_BIT                = FormatFeatureFlagBits2 0x0000000000008000
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT' specifies
+-- 'Vulkan.Core10.Handles.Image' /can/ be used as a sampled image with a
+-- min or max
+-- 'Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'. This
+-- bit /must/ only be exposed for formats that also support the
+-- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT'.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = FormatFeatureFlagBits2 0x0000000000010000
+-- | 'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT' specifies that an
+-- application /can/ define a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- using this format as a source, and that an image of this format /can/ be
+-- used with a
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
+-- @xChromaOffset@ and\/or @yChromaOffset@ of
+-- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'. Otherwise
+-- both @xChromaOffset@ and @yChromaOffset@ /must/ be
+-- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'. If a
+-- format does not incorporate chroma downsampling (it is not a “422” or
+-- “420” format) but the implementation supports sampler Y′CBCR conversion
+-- for this format, the implementation /must/ set
+-- 'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT'.
+pattern FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT     = FormatFeatureFlagBits2 0x0000000000020000
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT'
+-- specifies that an application /can/ define a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- using this format as a source with @chromaFilter@ set to
+-- 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = FormatFeatureFlagBits2 0x0000000000040000
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT'
+-- specifies that the format can have different chroma, min, and mag
+-- filters.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT =
+  FormatFeatureFlagBits2 0x0000000000080000
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
+-- specifies that reconstruction is explicit, as described in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-chroma-reconstruction>.
+-- If this bit is not present, reconstruction is implicit by default.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT =
+  FormatFeatureFlagBits2 0x0000000000100000
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'
+-- specifies that reconstruction /can/ be forcibly made explicit by setting
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@
+-- to 'Vulkan.Core10.FundamentalTypes.TRUE'. If the format being queried
+-- supports
+-- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT'
+-- it /must/ also support
+-- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT'.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT =
+  FormatFeatureFlagBits2 0x0000000000200000
+-- | 'FORMAT_FEATURE_2_DISJOINT_BIT' specifies that a multi-planar image
+-- /can/ have the
+-- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT' set
+-- during image creation. An implementation /must/ not set
+-- 'FORMAT_FEATURE_2_DISJOINT_BIT' for /single-plane formats/.
+pattern FORMAT_FEATURE_2_DISJOINT_BIT                             = FormatFeatureFlagBits2 0x0000000000400000
+-- | 'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT' specifies that an
+-- application /can/ define a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- using this format as a source, and that an image of this format /can/ be
+-- used with a
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
+-- @xChromaOffset@ and\/or @yChromaOffset@ of
+-- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.
+-- Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be
+-- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'. If
+-- neither 'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT' nor
+-- 'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT' is set, the application
+-- /must/ not define a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- using this format as a source.
+pattern FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT               = FormatFeatureFlagBits2 0x0000000000800000
+-- | 'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT' specifies that image
+-- views created with this format /can/ be used as
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
+-- for read operations without specifying a format.
+pattern FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT          = FormatFeatureFlagBits2 0x0000000080000000
+-- | 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT' specifies that image
+-- views created with this format /can/ be used as
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
+-- for write operations without specifying a format.
+pattern FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT         = FormatFeatureFlagBits2 0x0000000100000000
+-- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT' specifies that
+-- image views created with this format /can/ be used for depth comparison
+-- performed by @OpImage*Dref@ instructions.
+pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT       = FormatFeatureFlagBits2 0x0000000200000000
+-- | 'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
+-- format is supported as a renderable
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color Attachment>.
+-- This bit will be set for renderable color formats in the
+-- @linearTilingFeatures@. This /must/ not be set in the
+-- @optimalTilingFeatures@ or @bufferFeatures@ members.
+pattern FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV           = FormatFeatureFlagBits2 0x0000004000000000
+-- | 'FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
+-- that an image view /can/ be used as a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+-- An implementation /must/ not set this feature for formats with numeric
+-- type other than @*UINT@, or set it as a buffer feature.
+pattern FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = FormatFeatureFlagBits2 0x0000000040000000
+-- | 'FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an image
+-- view /can/ be used as a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
+pattern FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT             = FormatFeatureFlagBits2 0x0000000001000000
+-- | 'FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+-- specifies that the format /can/ be used as the vertex format when
+-- creating an
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure>
+-- ('Vulkan.Extensions.VK_KHR_acceleration_structure.AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@).
+-- This format /can/ also be used as the vertex format in host memory when
+-- doing
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+-- builds.
+pattern FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = FormatFeatureFlagBits2 0x0000000020000000
+
+conNameFormatFeatureFlagBits2 :: String
+conNameFormatFeatureFlagBits2 = "FormatFeatureFlagBits2"
+
+enumPrefixFormatFeatureFlagBits2 :: String
+enumPrefixFormatFeatureFlagBits2 = "FORMAT_FEATURE_2_"
+
+showTableFormatFeatureFlagBits2 :: [(FormatFeatureFlagBits2, String)]
+showTableFormatFeatureFlagBits2 =
+  [ (FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT              , "SAMPLED_IMAGE_BIT")
+  , (FORMAT_FEATURE_2_STORAGE_IMAGE_BIT              , "STORAGE_IMAGE_BIT")
+  , (FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT       , "STORAGE_IMAGE_ATOMIC_BIT")
+  , (FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT       , "UNIFORM_TEXEL_BUFFER_BIT")
+  , (FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT       , "STORAGE_TEXEL_BUFFER_BIT")
+  , (FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT, "STORAGE_TEXEL_BUFFER_ATOMIC_BIT")
+  , (FORMAT_FEATURE_2_VERTEX_BUFFER_BIT              , "VERTEX_BUFFER_BIT")
+  , (FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT           , "COLOR_ATTACHMENT_BIT")
+  , (FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT     , "COLOR_ATTACHMENT_BLEND_BIT")
+  , (FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT   , "DEPTH_STENCIL_ATTACHMENT_BIT")
+  , (FORMAT_FEATURE_2_BLIT_SRC_BIT                   , "BLIT_SRC_BIT")
+  , (FORMAT_FEATURE_2_BLIT_DST_BIT                   , "BLIT_DST_BIT")
+  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT, "SAMPLED_IMAGE_FILTER_LINEAR_BIT")
+  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT , "SAMPLED_IMAGE_FILTER_CUBIC_BIT")
+  , (FORMAT_FEATURE_2_TRANSFER_SRC_BIT               , "TRANSFER_SRC_BIT")
+  , (FORMAT_FEATURE_2_TRANSFER_DST_BIT               , "TRANSFER_DST_BIT")
+  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT, "SAMPLED_IMAGE_FILTER_MINMAX_BIT")
+  , (FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT    , "MIDPOINT_CHROMA_SAMPLES_BIT")
+  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT"
+    )
+  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT"
+    )
+  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT
+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT"
+    )
+  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
+    , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT"
+    )
+  , (FORMAT_FEATURE_2_DISJOINT_BIT                            , "DISJOINT_BIT")
+  , (FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT              , "COSITED_CHROMA_SAMPLES_BIT")
+  , (FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT         , "STORAGE_READ_WITHOUT_FORMAT_BIT")
+  , (FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT        , "STORAGE_WRITE_WITHOUT_FORMAT_BIT")
+  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT      , "SAMPLED_IMAGE_DEPTH_COMPARISON_BIT")
+  , (FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV          , "LINEAR_COLOR_ATTACHMENT_BIT_NV")
+  , (FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")
+  , (FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT            , "FRAGMENT_DENSITY_MAP_BIT_EXT")
+  , (FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, "ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR")
+  ]
+
+instance Show FormatFeatureFlagBits2 where
+  showsPrec = enumShowsPrec enumPrefixFormatFeatureFlagBits2
+                            showTableFormatFeatureFlagBits2
+                            conNameFormatFeatureFlagBits2
+                            (\(FormatFeatureFlagBits2 x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read FormatFeatureFlagBits2 where
+  readPrec = enumReadPrec enumPrefixFormatFeatureFlagBits2
+                          showTableFormatFeatureFlagBits2
+                          conNameFormatFeatureFlagBits2
+                          FormatFeatureFlagBits2
+
diff --git a/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs-boot b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/FormatFeatureFlags2.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "FormatFeatureFlags2"
+module Vulkan.Core13.Enums.FormatFeatureFlags2  ( FormatFeatureFlags2
+                                                , FormatFeatureFlagBits2
+                                                ) where
+
+
+
+type FormatFeatureFlags2 = FormatFeatureFlagBits2
+
+data FormatFeatureFlagBits2
+
diff --git a/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs b/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs
@@ -0,0 +1,123 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineCreationFeedbackFlagBits"
+module Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits  ( pattern PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT
+                                                             , pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT
+                                                             , pattern PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT
+                                                             , PipelineCreationFeedbackFlags
+                                                             , PipelineCreationFeedbackFlagBits( PIPELINE_CREATION_FEEDBACK_VALID_BIT
+                                                                                               , PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT
+                                                                                               , PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT
+                                                                                               , ..
+                                                                                               )
+                                                             ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags)
+-- No documentation found for TopLevel "VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT"
+pattern PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = PIPELINE_CREATION_FEEDBACK_VALID_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT"
+pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT"
+pattern PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT
+
+
+type PipelineCreationFeedbackFlags = PipelineCreationFeedbackFlagBits
+
+-- | VkPipelineCreationFeedbackFlagBits - Bitmask specifying pipeline or
+-- pipeline stage creation feedback
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_feedback>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedback',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo',
+-- 'PipelineCreationFeedbackFlags'
+newtype PipelineCreationFeedbackFlagBits = PipelineCreationFeedbackFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'PIPELINE_CREATION_FEEDBACK_VALID_BIT' indicates that the feedback
+-- information is valid.
+pattern PIPELINE_CREATION_FEEDBACK_VALID_BIT                          = PipelineCreationFeedbackFlagBits 0x00000001
+-- | 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+-- indicates that a readily usable pipeline or pipeline stage was found in
+-- the @pipelineCache@ specified by the application in the pipeline
+-- creation command.
+--
+-- An implementation /should/ set the
+-- 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT' bit if
+-- it was able to avoid the large majority of pipeline or pipeline stage
+-- creation work by using the @pipelineCache@ parameter of
+-- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', or
+-- 'Vulkan.Core10.Pipeline.createComputePipelines'. When an implementation
+-- sets this bit for the entire pipeline, it /may/ leave it unset for any
+-- stage.
+--
+-- Note
+--
+-- Implementations are encouraged to provide a meaningful signal to
+-- applications using this bit. The intention is to communicate to the
+-- application that the pipeline or pipeline stage was created \"as fast as
+-- it gets\" using the pipeline cache provided by the application. If an
+-- implementation uses an internal cache, it is discouraged from setting
+-- this bit as the feedback would be unactionable.
+pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = PipelineCreationFeedbackFlagBits 0x00000002
+-- | 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT' indicates
+-- that the base pipeline specified by the @basePipelineHandle@ or
+-- @basePipelineIndex@ member of the @Vk*PipelineCreateInfo@ structure was
+-- used to accelerate the creation of the pipeline.
+--
+-- An implementation /should/ set the
+-- 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT' bit if it
+-- was able to avoid a significant amount of work by using the base
+-- pipeline.
+--
+-- Note
+--
+-- While \"significant amount of work\" is subjective, implementations are
+-- encouraged to provide a meaningful signal to applications using this
+-- bit. For example, a 1% reduction in duration may not warrant setting
+-- this bit, while a 50% reduction would.
+pattern PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT     = PipelineCreationFeedbackFlagBits 0x00000004
+
+conNamePipelineCreationFeedbackFlagBits :: String
+conNamePipelineCreationFeedbackFlagBits = "PipelineCreationFeedbackFlagBits"
+
+enumPrefixPipelineCreationFeedbackFlagBits :: String
+enumPrefixPipelineCreationFeedbackFlagBits = "PIPELINE_CREATION_FEEDBACK_"
+
+showTablePipelineCreationFeedbackFlagBits :: [(PipelineCreationFeedbackFlagBits, String)]
+showTablePipelineCreationFeedbackFlagBits =
+  [ (PIPELINE_CREATION_FEEDBACK_VALID_BIT                         , "VALID_BIT")
+  , (PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT, "APPLICATION_PIPELINE_CACHE_HIT_BIT")
+  , (PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT    , "BASE_PIPELINE_ACCELERATION_BIT")
+  ]
+
+instance Show PipelineCreationFeedbackFlagBits where
+  showsPrec = enumShowsPrec enumPrefixPipelineCreationFeedbackFlagBits
+                            showTablePipelineCreationFeedbackFlagBits
+                            conNamePipelineCreationFeedbackFlagBits
+                            (\(PipelineCreationFeedbackFlagBits x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read PipelineCreationFeedbackFlagBits where
+  readPrec = enumReadPrec enumPrefixPipelineCreationFeedbackFlagBits
+                          showTablePipelineCreationFeedbackFlagBits
+                          conNamePipelineCreationFeedbackFlagBits
+                          PipelineCreationFeedbackFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs-boot b/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/PipelineCreationFeedbackFlagBits.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineCreationFeedbackFlagBits"
+module Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits  ( PipelineCreationFeedbackFlags
+                                                             , PipelineCreationFeedbackFlagBits
+                                                             ) where
+
+
+
+type PipelineCreationFeedbackFlags = PipelineCreationFeedbackFlagBits
+
+data PipelineCreationFeedbackFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs b/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs
@@ -0,0 +1,471 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineStageFlags2"
+module Vulkan.Core13.Enums.PipelineStageFlags2  ( pattern PIPELINE_STAGE_2_NONE_KHR
+                                                , pattern PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_TRANSFER_BIT
+                                                , pattern PIPELINE_STAGE_2_TRANSFER_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_HOST_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_COPY_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_RESOLVE_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_BLIT_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_CLEAR_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR
+                                                , pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR
+                                                , PipelineStageFlags2
+                                                , PipelineStageFlagBits2( PIPELINE_STAGE_2_NONE
+                                                                        , PIPELINE_STAGE_2_TOP_OF_PIPE_BIT
+                                                                        , PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
+                                                                        , PIPELINE_STAGE_2_VERTEX_INPUT_BIT
+                                                                        , PIPELINE_STAGE_2_VERTEX_SHADER_BIT
+                                                                        , PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
+                                                                        , PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
+                                                                        , PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
+                                                                        , PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
+                                                                        , PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
+                                                                        , PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
+                                                                        , PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
+                                                                        , PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
+                                                                        , PIPELINE_STAGE_2_ALL_TRANSFER_BIT
+                                                                        , PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT
+                                                                        , PIPELINE_STAGE_2_HOST_BIT
+                                                                        , PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
+                                                                        , PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+                                                                        , PIPELINE_STAGE_2_COPY_BIT
+                                                                        , PIPELINE_STAGE_2_RESOLVE_BIT
+                                                                        , PIPELINE_STAGE_2_BLIT_BIT
+                                                                        , PIPELINE_STAGE_2_CLEAR_BIT
+                                                                        , PIPELINE_STAGE_2_INDEX_INPUT_BIT
+                                                                        , PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
+                                                                        , PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT
+                                                                        , PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
+                                                                        , PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
+                                                                        , PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
+                                                                        , PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
+                                                                        , PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
+                                                                        , PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
+                                                                        , PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
+                                                                        , PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+                                                                        , PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
+                                                                        , PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
+                                                                        , PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
+                                                                        , ..
+                                                                        )
+                                                ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags64)
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_NONE_KHR"
+pattern PIPELINE_STAGE_2_NONE_KHR = PIPELINE_STAGE_2_NONE
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR"
+pattern PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = PIPELINE_STAGE_2_TOP_OF_PIPE_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR"
+pattern PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR"
+pattern PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = PIPELINE_STAGE_2_VERTEX_INPUT_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR"
+pattern PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = PIPELINE_STAGE_2_VERTEX_SHADER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR"
+pattern PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR"
+pattern PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR"
+pattern PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR"
+pattern PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR"
+pattern PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR"
+pattern PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR"
+pattern PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR"
+pattern PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = PIPELINE_STAGE_2_COMPUTE_SHADER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR"
+pattern PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = PIPELINE_STAGE_2_ALL_TRANSFER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_TRANSFER_BIT"
+pattern PIPELINE_STAGE_2_TRANSFER_BIT = PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR"
+pattern PIPELINE_STAGE_2_TRANSFER_BIT_KHR = PIPELINE_STAGE_2_TRANSFER_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR"
+pattern PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_HOST_BIT_KHR"
+pattern PIPELINE_STAGE_2_HOST_BIT_KHR = PIPELINE_STAGE_2_HOST_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR"
+pattern PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR"
+pattern PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = PIPELINE_STAGE_2_ALL_COMMANDS_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_COPY_BIT_KHR"
+pattern PIPELINE_STAGE_2_COPY_BIT_KHR = PIPELINE_STAGE_2_COPY_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR"
+pattern PIPELINE_STAGE_2_RESOLVE_BIT_KHR = PIPELINE_STAGE_2_RESOLVE_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_BLIT_BIT_KHR"
+pattern PIPELINE_STAGE_2_BLIT_BIT_KHR = PIPELINE_STAGE_2_BLIT_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR"
+pattern PIPELINE_STAGE_2_CLEAR_BIT_KHR = PIPELINE_STAGE_2_CLEAR_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR"
+pattern PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = PIPELINE_STAGE_2_INDEX_INPUT_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR"
+pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR"
+pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT
+
+
+type PipelineStageFlags2 = PipelineStageFlagBits2
+
+-- | VkPipelineStageFlagBits2 - Pipeline stage flags for
+-- VkPipelineStageFlags2
+--
+-- = Description
+--
+-- Note
+--
+-- The @TOP@ and @BOTTOM@ pipeline stages are deprecated, and applications
+-- should prefer 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT' and
+-- 'PIPELINE_STAGE_2_NONE'.
+--
+-- Note
+--
+-- The 'PipelineStageFlags2' bitmask goes beyond the 31 individual bit
+-- flags allowable within a C99 enum, which is how
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' is
+-- defined. The first 31 values are common to both, and are
+-- interchangeable.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>
+newtype PipelineStageFlagBits2 = PipelineStageFlagBits2 Flags64
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'PIPELINE_STAGE_2_NONE' specifies no stages of execution.
+pattern PIPELINE_STAGE_2_NONE                               = PipelineStageFlagBits2 0x0000000000000000
+-- | 'PIPELINE_STAGE_2_TOP_OF_PIPE_BIT' is equivalent to
+-- 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT' with
+-- 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2' set to @0@ when
+-- specified in the second synchronization scope, but equivalent to
+-- 'PIPELINE_STAGE_2_NONE' in the first scope.
+pattern PIPELINE_STAGE_2_TOP_OF_PIPE_BIT                    = PipelineStageFlagBits2 0x0000000000000001
+-- | 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT' specifies the stage of the pipeline
+-- where indirect command parameters are consumed. This stage also includes
+-- reading commands written by
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
+pattern PIPELINE_STAGE_2_DRAW_INDIRECT_BIT                  = PipelineStageFlagBits2 0x0000000000000002
+-- | 'PIPELINE_STAGE_2_VERTEX_INPUT_BIT' is equivalent to the logical OR of:
+--
+-- -   'PIPELINE_STAGE_2_INDEX_INPUT_BIT'
+--
+-- -   'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT'
+pattern PIPELINE_STAGE_2_VERTEX_INPUT_BIT                   = PipelineStageFlagBits2 0x0000000000000004
+-- | 'PIPELINE_STAGE_2_VERTEX_SHADER_BIT' specifies the vertex shader stage.
+pattern PIPELINE_STAGE_2_VERTEX_SHADER_BIT                  = PipelineStageFlagBits2 0x0000000000000008
+-- | 'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT' specifies the
+-- tessellation control shader stage.
+pattern PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT    = PipelineStageFlagBits2 0x0000000000000010
+-- | 'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT' specifies the
+-- tessellation evaluation shader stage.
+pattern PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = PipelineStageFlagBits2 0x0000000000000020
+-- | 'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT' specifies the geometry shader
+-- stage.
+pattern PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT                = PipelineStageFlagBits2 0x0000000000000040
+-- | 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT' specifies the fragment shader
+-- stage.
+pattern PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT                = PipelineStageFlagBits2 0x0000000000000080
+-- | 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT' specifies the stage of the
+-- pipeline where early fragment tests (depth and stencil tests before
+-- fragment shading) are performed. This stage also includes
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>
+-- for framebuffer attachments with a depth\/stencil format.
+pattern PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT           = PipelineStageFlagBits2 0x0000000000000100
+-- | 'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT' specifies the stage of the
+-- pipeline where late fragment tests (depth and stencil tests after
+-- fragment shading) are performed. This stage also includes
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass store operations>
+-- for framebuffer attachments with a depth\/stencil format.
+pattern PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT            = PipelineStageFlagBits2 0x0000000000000200
+-- | 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT' specifies the stage of
+-- the pipeline after blending where the final color values are output from
+-- the pipeline. This stage also includes
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>
+-- and multisample resolve operations for framebuffer attachments with a
+-- color or depth\/stencil format.
+pattern PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT        = PipelineStageFlagBits2 0x0000000000000400
+-- | 'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT' specifies the compute shader
+-- stage.
+pattern PIPELINE_STAGE_2_COMPUTE_SHADER_BIT                 = PipelineStageFlagBits2 0x0000000000000800
+-- | 'PIPELINE_STAGE_2_ALL_TRANSFER_BIT' is equivalent to specifying all of:
+--
+-- -   'PIPELINE_STAGE_2_COPY_BIT'
+--
+-- -   'PIPELINE_STAGE_2_BLIT_BIT'
+--
+-- -   'PIPELINE_STAGE_2_RESOLVE_BIT'
+--
+-- -   'PIPELINE_STAGE_2_CLEAR_BIT'
+pattern PIPELINE_STAGE_2_ALL_TRANSFER_BIT                   = PipelineStageFlagBits2 0x0000000000001000
+-- | 'PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT' is equivalent to
+-- 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT' with
+-- 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2' set to @0@ when
+-- specified in the first synchronization scope, but equivalent to
+-- 'PIPELINE_STAGE_2_NONE' in the second scope.
+pattern PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT                 = PipelineStageFlagBits2 0x0000000000002000
+-- | 'PIPELINE_STAGE_2_HOST_BIT' specifies a pseudo-stage indicating
+-- execution on the host of reads\/writes of device memory. This stage is
+-- not invoked by any commands recorded in a command buffer.
+pattern PIPELINE_STAGE_2_HOST_BIT                           = PipelineStageFlagBits2 0x0000000000004000
+-- | 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT' specifies the execution of all
+-- graphics pipeline stages, and is equivalent to the logical OR of:
+--
+-- -   'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT'
+--
+-- -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   'PIPELINE_STAGE_2_VERTEX_INPUT_BIT'
+--
+-- -   'PIPELINE_STAGE_2_VERTEX_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT'
+--
+-- -   'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT'
+--
+-- -   'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--
+-- -   'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+pattern PIPELINE_STAGE_2_ALL_GRAPHICS_BIT                   = PipelineStageFlagBits2 0x0000000000008000
+-- | 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT' specifies all operations performed
+-- by all commands supported on the queue it is used with.
+pattern PIPELINE_STAGE_2_ALL_COMMANDS_BIT                   = PipelineStageFlagBits2 0x0000000000010000
+-- | 'PIPELINE_STAGE_2_COPY_BIT' specifies the execution of all
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies copy commands>,
+-- including 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'.
+pattern PIPELINE_STAGE_2_COPY_BIT                           = PipelineStageFlagBits2 0x0000000100000000
+-- | 'PIPELINE_STAGE_2_RESOLVE_BIT' specifies the execution of
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'.
+pattern PIPELINE_STAGE_2_RESOLVE_BIT                        = PipelineStageFlagBits2 0x0000000200000000
+-- | 'PIPELINE_STAGE_2_BLIT_BIT' specifies the execution of
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'.
+pattern PIPELINE_STAGE_2_BLIT_BIT                           = PipelineStageFlagBits2 0x0000000400000000
+-- | 'PIPELINE_STAGE_2_CLEAR_BIT' specifies the execution of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#clears clear commands>,
+-- with the exception of
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
+pattern PIPELINE_STAGE_2_CLEAR_BIT                          = PipelineStageFlagBits2 0x0000000800000000
+-- | 'PIPELINE_STAGE_2_INDEX_INPUT_BIT' specifies the stage of the pipeline
+-- where index buffers are consumed.
+pattern PIPELINE_STAGE_2_INDEX_INPUT_BIT                    = PipelineStageFlagBits2 0x0000001000000000
+-- | 'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT' specifies the stage of the
+-- pipeline where vertex buffers are consumed.
+pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT         = PipelineStageFlagBits2 0x0000002000000000
+-- | 'PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT' is equivalent to
+-- specifying all supported
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>:
+--
+-- -   'PIPELINE_STAGE_2_VERTEX_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT      = PipelineStageFlagBits2 0x0000004000000000
+-- | 'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI' specifies the stage of the
+-- pipeline where the invocation mask image is read by the implementation
+-- to optimize the ray dispatch.
+pattern PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI         = PipelineStageFlagBits2 0x0000010000000000
+-- | 'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI' specifies the subpass
+-- shading shader stage.
+pattern PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI         = PipelineStageFlagBits2 0x0000008000000000
+-- | 'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV' specifies the mesh shader stage.
+pattern PIPELINE_STAGE_2_MESH_SHADER_BIT_NV                 = PipelineStageFlagBits2 0x0000000000100000
+-- | 'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' specifies the task shader stage.
+pattern PIPELINE_STAGE_2_TASK_SHADER_BIT_NV                 = PipelineStageFlagBits2 0x0000000000080000
+-- | 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage
+-- of the pipeline where the fragment density map is read to
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
+pattern PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT   = PipelineStageFlagBits2 0x0000000000800000
+-- | 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of
+-- the ray tracing shader stages.
+pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR         = PipelineStageFlagBits2 0x0000000000200000
+-- | 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
+-- execution of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure acceleration structure commands>.
+pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = PipelineStageFlagBits2 0x0000000002000000
+-- | 'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
+-- the stage of the pipeline where the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+-- is read to determine the fragment shading rate for portions of a
+-- rasterized primitive.
+pattern PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits2 0x0000000000400000
+-- | 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the
+-- pipeline where device-side generation of commands via
+-- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'
+-- is handled.
+pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV          = PipelineStageFlagBits2 0x0000000000020000
+-- | 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of
+-- the pipeline where the predicate of conditional rendering is consumed.
+pattern PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT      = PipelineStageFlagBits2 0x0000000000040000
+-- | 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of the
+-- pipeline where vertex attribute output values are written to the
+-- transform feedback buffers.
+pattern PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT         = PipelineStageFlagBits2 0x0000000001000000
+
+conNamePipelineStageFlagBits2 :: String
+conNamePipelineStageFlagBits2 = "PipelineStageFlagBits2"
+
+enumPrefixPipelineStageFlagBits2 :: String
+enumPrefixPipelineStageFlagBits2 = "PIPELINE_STAGE_2_"
+
+showTablePipelineStageFlagBits2 :: [(PipelineStageFlagBits2, String)]
+showTablePipelineStageFlagBits2 =
+  [ (PIPELINE_STAGE_2_NONE                              , "NONE")
+  , (PIPELINE_STAGE_2_TOP_OF_PIPE_BIT                   , "TOP_OF_PIPE_BIT")
+  , (PIPELINE_STAGE_2_DRAW_INDIRECT_BIT                 , "DRAW_INDIRECT_BIT")
+  , (PIPELINE_STAGE_2_VERTEX_INPUT_BIT                  , "VERTEX_INPUT_BIT")
+  , (PIPELINE_STAGE_2_VERTEX_SHADER_BIT                 , "VERTEX_SHADER_BIT")
+  , (PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT   , "TESSELLATION_CONTROL_SHADER_BIT")
+  , (PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT, "TESSELLATION_EVALUATION_SHADER_BIT")
+  , (PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT               , "GEOMETRY_SHADER_BIT")
+  , (PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT               , "FRAGMENT_SHADER_BIT")
+  , (PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT          , "EARLY_FRAGMENT_TESTS_BIT")
+  , (PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT           , "LATE_FRAGMENT_TESTS_BIT")
+  , (PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT       , "COLOR_ATTACHMENT_OUTPUT_BIT")
+  , (PIPELINE_STAGE_2_COMPUTE_SHADER_BIT                , "COMPUTE_SHADER_BIT")
+  , (PIPELINE_STAGE_2_ALL_TRANSFER_BIT                  , "ALL_TRANSFER_BIT")
+  , (PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT                , "BOTTOM_OF_PIPE_BIT")
+  , (PIPELINE_STAGE_2_HOST_BIT                          , "HOST_BIT")
+  , (PIPELINE_STAGE_2_ALL_GRAPHICS_BIT                  , "ALL_GRAPHICS_BIT")
+  , (PIPELINE_STAGE_2_ALL_COMMANDS_BIT                  , "ALL_COMMANDS_BIT")
+  , (PIPELINE_STAGE_2_COPY_BIT                          , "COPY_BIT")
+  , (PIPELINE_STAGE_2_RESOLVE_BIT                       , "RESOLVE_BIT")
+  , (PIPELINE_STAGE_2_BLIT_BIT                          , "BLIT_BIT")
+  , (PIPELINE_STAGE_2_CLEAR_BIT                         , "CLEAR_BIT")
+  , (PIPELINE_STAGE_2_INDEX_INPUT_BIT                   , "INDEX_INPUT_BIT")
+  , (PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT        , "VERTEX_ATTRIBUTE_INPUT_BIT")
+  , (PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT     , "PRE_RASTERIZATION_SHADERS_BIT")
+  , (PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI        , "INVOCATION_MASK_BIT_HUAWEI")
+  , (PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI        , "SUBPASS_SHADING_BIT_HUAWEI")
+  , (PIPELINE_STAGE_2_MESH_SHADER_BIT_NV                , "MESH_SHADER_BIT_NV")
+  , (PIPELINE_STAGE_2_TASK_SHADER_BIT_NV                , "TASK_SHADER_BIT_NV")
+  , (PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT  , "FRAGMENT_DENSITY_PROCESS_BIT_EXT")
+  , (PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR        , "RAY_TRACING_SHADER_BIT_KHR")
+  , (PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, "ACCELERATION_STRUCTURE_BUILD_BIT_KHR")
+  , (PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")
+  , (PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV         , "COMMAND_PREPROCESS_BIT_NV")
+  , (PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT     , "CONDITIONAL_RENDERING_BIT_EXT")
+  , (PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT        , "TRANSFORM_FEEDBACK_BIT_EXT")
+  ]
+
+instance Show PipelineStageFlagBits2 where
+  showsPrec = enumShowsPrec enumPrefixPipelineStageFlagBits2
+                            showTablePipelineStageFlagBits2
+                            conNamePipelineStageFlagBits2
+                            (\(PipelineStageFlagBits2 x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read PipelineStageFlagBits2 where
+  readPrec = enumReadPrec enumPrefixPipelineStageFlagBits2
+                          showTablePipelineStageFlagBits2
+                          conNamePipelineStageFlagBits2
+                          PipelineStageFlagBits2
+
diff --git a/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs-boot b/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/PipelineStageFlags2.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PipelineStageFlags2"
+module Vulkan.Core13.Enums.PipelineStageFlags2  ( PipelineStageFlags2
+                                                , PipelineStageFlagBits2
+                                                ) where
+
+
+
+type PipelineStageFlags2 = PipelineStageFlagBits2
+
+data PipelineStageFlagBits2
+
diff --git a/src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs b/src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs
@@ -0,0 +1,54 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PrivateDataSlotCreateFlagBits"
+module Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits  ( PrivateDataSlotCreateFlags
+                                                          , PrivateDataSlotCreateFlagBits(..)
+                                                          ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags)
+type PrivateDataSlotCreateFlags = PrivateDataSlotCreateFlagBits
+
+-- | VkPrivateDataSlotCreateFlagBits - Bitmask specifying additional
+-- parameters for private data slot creation
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'PrivateDataSlotCreateFlags'
+newtype PrivateDataSlotCreateFlagBits = PrivateDataSlotCreateFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+
+
+conNamePrivateDataSlotCreateFlagBits :: String
+conNamePrivateDataSlotCreateFlagBits = "PrivateDataSlotCreateFlagBits"
+
+enumPrefixPrivateDataSlotCreateFlagBits :: String
+enumPrefixPrivateDataSlotCreateFlagBits = ""
+
+showTablePrivateDataSlotCreateFlagBits :: [(PrivateDataSlotCreateFlagBits, String)]
+showTablePrivateDataSlotCreateFlagBits = []
+
+instance Show PrivateDataSlotCreateFlagBits where
+  showsPrec = enumShowsPrec enumPrefixPrivateDataSlotCreateFlagBits
+                            showTablePrivateDataSlotCreateFlagBits
+                            conNamePrivateDataSlotCreateFlagBits
+                            (\(PrivateDataSlotCreateFlagBits x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read PrivateDataSlotCreateFlagBits where
+  readPrec = enumReadPrec enumPrefixPrivateDataSlotCreateFlagBits
+                          showTablePrivateDataSlotCreateFlagBits
+                          conNamePrivateDataSlotCreateFlagBits
+                          PrivateDataSlotCreateFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs-boot b/src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/PrivateDataSlotCreateFlagBits.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "PrivateDataSlotCreateFlagBits"
+module Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits  ( PrivateDataSlotCreateFlags
+                                                          , PrivateDataSlotCreateFlagBits
+                                                          ) where
+
+
+
+type PrivateDataSlotCreateFlags = PrivateDataSlotCreateFlagBits
+
+data PrivateDataSlotCreateFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/RenderingFlagBits.hs b/src/Vulkan/Core13/Enums/RenderingFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/RenderingFlagBits.hs
@@ -0,0 +1,94 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "RenderingFlagBits"
+module Vulkan.Core13.Enums.RenderingFlagBits  ( pattern RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR
+                                              , pattern RENDERING_SUSPENDING_BIT_KHR
+                                              , pattern RENDERING_RESUMING_BIT_KHR
+                                              , RenderingFlags
+                                              , RenderingFlagBits( RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
+                                                                 , RENDERING_SUSPENDING_BIT
+                                                                 , RENDERING_RESUMING_BIT
+                                                                 , ..
+                                                                 )
+                                              ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags)
+-- No documentation found for TopLevel "VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR"
+pattern RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
+
+
+-- No documentation found for TopLevel "VK_RENDERING_SUSPENDING_BIT_KHR"
+pattern RENDERING_SUSPENDING_BIT_KHR = RENDERING_SUSPENDING_BIT
+
+
+-- No documentation found for TopLevel "VK_RENDERING_RESUMING_BIT_KHR"
+pattern RENDERING_RESUMING_BIT_KHR = RENDERING_RESUMING_BIT
+
+
+type RenderingFlags = RenderingFlagBits
+
+-- | VkRenderingFlagBits - Bitmask specifying additional properties of a
+-- dynamic render pass instance
+--
+-- = Description
+--
+-- The contents of @pRenderingInfo@ /must/ match between suspended render
+-- pass instances and the render pass instances that resume them, other
+-- than the presence or absence of the 'RENDERING_RESUMING_BIT',
+-- 'RENDERING_SUSPENDING_BIT', and
+-- 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' flags. No action or
+-- synchronization commands, or other render pass instances, are allowed
+-- between suspending and resuming render pass instances.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'RenderingFlags'
+newtype RenderingFlagBits = RenderingFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT' specifies that draw
+-- calls for the render pass instance will be recorded in secondary command
+-- buffers.
+pattern RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = RenderingFlagBits 0x00000001
+-- | 'RENDERING_SUSPENDING_BIT' specifies that the render pass instance will
+-- be suspended.
+pattern RENDERING_SUSPENDING_BIT                         = RenderingFlagBits 0x00000002
+-- | 'RENDERING_RESUMING_BIT' specifies that the render pass instance is
+-- resuming an earlier suspended render pass instance.
+pattern RENDERING_RESUMING_BIT                           = RenderingFlagBits 0x00000004
+
+conNameRenderingFlagBits :: String
+conNameRenderingFlagBits = "RenderingFlagBits"
+
+enumPrefixRenderingFlagBits :: String
+enumPrefixRenderingFlagBits = "RENDERING_"
+
+showTableRenderingFlagBits :: [(RenderingFlagBits, String)]
+showTableRenderingFlagBits =
+  [ (RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT, "CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT")
+  , (RENDERING_SUSPENDING_BIT                        , "SUSPENDING_BIT")
+  , (RENDERING_RESUMING_BIT                          , "RESUMING_BIT")
+  ]
+
+instance Show RenderingFlagBits where
+  showsPrec = enumShowsPrec enumPrefixRenderingFlagBits
+                            showTableRenderingFlagBits
+                            conNameRenderingFlagBits
+                            (\(RenderingFlagBits x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read RenderingFlagBits where
+  readPrec =
+    enumReadPrec enumPrefixRenderingFlagBits showTableRenderingFlagBits conNameRenderingFlagBits RenderingFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/RenderingFlagBits.hs-boot b/src/Vulkan/Core13/Enums/RenderingFlagBits.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/RenderingFlagBits.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "RenderingFlagBits"
+module Vulkan.Core13.Enums.RenderingFlagBits  ( RenderingFlags
+                                              , RenderingFlagBits
+                                              ) where
+
+
+
+type RenderingFlags = RenderingFlagBits
+
+data RenderingFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/SubmitFlagBits.hs b/src/Vulkan/Core13/Enums/SubmitFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/SubmitFlagBits.hs
@@ -0,0 +1,59 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "SubmitFlagBits"
+module Vulkan.Core13.Enums.SubmitFlagBits  ( pattern SUBMIT_PROTECTED_BIT_KHR
+                                           , SubmitFlags
+                                           , SubmitFlagBits( SUBMIT_PROTECTED_BIT
+                                                           , ..
+                                                           )
+                                           ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags)
+-- No documentation found for TopLevel "VK_SUBMIT_PROTECTED_BIT_KHR"
+pattern SUBMIT_PROTECTED_BIT_KHR = SUBMIT_PROTECTED_BIT
+
+
+type SubmitFlags = SubmitFlagBits
+
+-- | VkSubmitFlagBits - Bitmask specifying behavior of a submission
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'SubmitFlags'
+newtype SubmitFlagBits = SubmitFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'SUBMIT_PROTECTED_BIT' specifies that this batch is a protected
+-- submission.
+pattern SUBMIT_PROTECTED_BIT = SubmitFlagBits 0x00000001
+
+conNameSubmitFlagBits :: String
+conNameSubmitFlagBits = "SubmitFlagBits"
+
+enumPrefixSubmitFlagBits :: String
+enumPrefixSubmitFlagBits = "SUBMIT_PROTECTED_BIT"
+
+showTableSubmitFlagBits :: [(SubmitFlagBits, String)]
+showTableSubmitFlagBits = [(SUBMIT_PROTECTED_BIT, "")]
+
+instance Show SubmitFlagBits where
+  showsPrec = enumShowsPrec enumPrefixSubmitFlagBits
+                            showTableSubmitFlagBits
+                            conNameSubmitFlagBits
+                            (\(SubmitFlagBits x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read SubmitFlagBits where
+  readPrec = enumReadPrec enumPrefixSubmitFlagBits showTableSubmitFlagBits conNameSubmitFlagBits SubmitFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/SubmitFlagBits.hs-boot b/src/Vulkan/Core13/Enums/SubmitFlagBits.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/SubmitFlagBits.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "SubmitFlagBits"
+module Vulkan.Core13.Enums.SubmitFlagBits  ( SubmitFlags
+                                           , SubmitFlagBits
+                                           ) where
+
+
+
+type SubmitFlags = SubmitFlagBits
+
+data SubmitFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs b/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs
@@ -0,0 +1,124 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "ToolPurposeFlagBits"
+module Vulkan.Core13.Enums.ToolPurposeFlagBits  ( pattern TOOL_PURPOSE_VALIDATION_BIT_EXT
+                                                , pattern TOOL_PURPOSE_PROFILING_BIT_EXT
+                                                , pattern TOOL_PURPOSE_TRACING_BIT_EXT
+                                                , pattern TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT
+                                                , pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT
+                                                , ToolPurposeFlags
+                                                , ToolPurposeFlagBits( TOOL_PURPOSE_VALIDATION_BIT
+                                                                     , TOOL_PURPOSE_PROFILING_BIT
+                                                                     , TOOL_PURPOSE_TRACING_BIT
+                                                                     , TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT
+                                                                     , TOOL_PURPOSE_MODIFYING_FEATURES_BIT
+                                                                     , TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT
+                                                                     , TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT
+                                                                     , ..
+                                                                     )
+                                                ) where
+
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import GHC.Show (showString)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Data.Bits (Bits)
+import Data.Bits (FiniteBits)
+import Foreign.Storable (Storable)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Vulkan.Core10.FundamentalTypes (Flags)
+-- No documentation found for TopLevel "VK_TOOL_PURPOSE_VALIDATION_BIT_EXT"
+pattern TOOL_PURPOSE_VALIDATION_BIT_EXT = TOOL_PURPOSE_VALIDATION_BIT
+
+
+-- No documentation found for TopLevel "VK_TOOL_PURPOSE_PROFILING_BIT_EXT"
+pattern TOOL_PURPOSE_PROFILING_BIT_EXT = TOOL_PURPOSE_PROFILING_BIT
+
+
+-- No documentation found for TopLevel "VK_TOOL_PURPOSE_TRACING_BIT_EXT"
+pattern TOOL_PURPOSE_TRACING_BIT_EXT = TOOL_PURPOSE_TRACING_BIT
+
+
+-- No documentation found for TopLevel "VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT"
+pattern TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT
+
+
+-- No documentation found for TopLevel "VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT"
+pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = TOOL_PURPOSE_MODIFYING_FEATURES_BIT
+
+
+type ToolPurposeFlags = ToolPurposeFlagBits
+
+-- | VkToolPurposeFlagBits - Bitmask specifying the purposes of an active
+-- tool
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'ToolPurposeFlags'
+newtype ToolPurposeFlagBits = ToolPurposeFlagBits Flags
+  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
+
+-- | 'TOOL_PURPOSE_VALIDATION_BIT' specifies that the tool provides
+-- validation of API usage.
+pattern TOOL_PURPOSE_VALIDATION_BIT          = ToolPurposeFlagBits 0x00000001
+-- | 'TOOL_PURPOSE_PROFILING_BIT' specifies that the tool provides profiling
+-- of API usage.
+pattern TOOL_PURPOSE_PROFILING_BIT           = ToolPurposeFlagBits 0x00000002
+-- | 'TOOL_PURPOSE_TRACING_BIT' specifies that the tool is capturing data
+-- about the application’s API usage, including anything from simple
+-- logging to capturing data for later replay.
+pattern TOOL_PURPOSE_TRACING_BIT             = ToolPurposeFlagBits 0x00000004
+-- | 'TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT' specifies that the tool provides
+-- additional API features\/extensions on top of the underlying
+-- implementation.
+pattern TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = ToolPurposeFlagBits 0x00000008
+-- | 'TOOL_PURPOSE_MODIFYING_FEATURES_BIT' specifies that the tool modifies
+-- the API features\/limits\/extensions presented to the application.
+pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT  = ToolPurposeFlagBits 0x00000010
+-- | 'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT' specifies that the tool consumes
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-debug-markers debug markers>
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-object-debug-annotation object debug annotation>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-queue-labels queue labels>,
+-- or
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-command-buffer-labels command buffer labels>
+pattern TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT   = ToolPurposeFlagBits 0x00000040
+-- | 'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT' specifies that the tool reports
+-- additional information to the application via callbacks specified by
+-- 'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT' or
+-- 'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT'
+pattern TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = ToolPurposeFlagBits 0x00000020
+
+conNameToolPurposeFlagBits :: String
+conNameToolPurposeFlagBits = "ToolPurposeFlagBits"
+
+enumPrefixToolPurposeFlagBits :: String
+enumPrefixToolPurposeFlagBits = "TOOL_PURPOSE_"
+
+showTableToolPurposeFlagBits :: [(ToolPurposeFlagBits, String)]
+showTableToolPurposeFlagBits =
+  [ (TOOL_PURPOSE_VALIDATION_BIT         , "VALIDATION_BIT")
+  , (TOOL_PURPOSE_PROFILING_BIT          , "PROFILING_BIT")
+  , (TOOL_PURPOSE_TRACING_BIT            , "TRACING_BIT")
+  , (TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT, "ADDITIONAL_FEATURES_BIT")
+  , (TOOL_PURPOSE_MODIFYING_FEATURES_BIT , "MODIFYING_FEATURES_BIT")
+  , (TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT  , "DEBUG_MARKERS_BIT_EXT")
+  , (TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT, "DEBUG_REPORTING_BIT_EXT")
+  ]
+
+instance Show ToolPurposeFlagBits where
+  showsPrec = enumShowsPrec enumPrefixToolPurposeFlagBits
+                            showTableToolPurposeFlagBits
+                            conNameToolPurposeFlagBits
+                            (\(ToolPurposeFlagBits x) -> x)
+                            (\x -> showString "0x" . showHex x)
+
+instance Read ToolPurposeFlagBits where
+  readPrec = enumReadPrec enumPrefixToolPurposeFlagBits
+                          showTableToolPurposeFlagBits
+                          conNameToolPurposeFlagBits
+                          ToolPurposeFlagBits
+
diff --git a/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs-boot b/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Enums/ToolPurposeFlagBits.hs-boot
@@ -0,0 +1,12 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "ToolPurposeFlagBits"
+module Vulkan.Core13.Enums.ToolPurposeFlagBits  ( ToolPurposeFlags
+                                                , ToolPurposeFlagBits
+                                                ) where
+
+
+
+type ToolPurposeFlags = ToolPurposeFlagBits
+
+data ToolPurposeFlagBits
+
diff --git a/src/Vulkan/Core13/Handles.hs b/src/Vulkan/Core13/Handles.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Handles.hs
@@ -0,0 +1,57 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Handles"
+module Vulkan.Core13.Handles  ( PrivateDataSlot(..)
+                              , PhysicalDevice(..)
+                              , Device(..)
+                              , Queue(..)
+                              , CommandBuffer(..)
+                              , Buffer(..)
+                              , Image(..)
+                              , ImageView(..)
+                              , Fence(..)
+                              , Semaphore(..)
+                              , Event(..)
+                              , QueryPool(..)
+                              ) where
+
+import GHC.Show (showParen)
+import Numeric (showHex)
+import Vulkan.Zero (Zero)
+import Foreign.Storable (Storable)
+import Data.Word (Word64)
+import Vulkan.Core10.APIConstants (HasObjectType(..))
+import Vulkan.Core10.APIConstants (IsHandle)
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_PRIVATE_DATA_SLOT))
+import Vulkan.Core10.Handles (Buffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Event(..))
+import Vulkan.Core10.Handles (Fence(..))
+import Vulkan.Core10.Handles (Image(..))
+import Vulkan.Core10.Handles (ImageView(..))
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (QueryPool(..))
+import Vulkan.Core10.Handles (Queue(..))
+import Vulkan.Core10.Handles (Semaphore(..))
+-- | VkPrivateDataSlot - Opaque handle to a private data slot object
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.createPrivateDataSlot',
+-- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.destroyPrivateDataSlot',
+-- 'Vulkan.Extensions.VK_EXT_private_data.destroyPrivateDataSlotEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.getPrivateData',
+-- 'Vulkan.Extensions.VK_EXT_private_data.getPrivateDataEXT',
+-- 'Vulkan.Core13.Promoted_From_VK_EXT_private_data.setPrivateData',
+-- 'Vulkan.Extensions.VK_EXT_private_data.setPrivateDataEXT'
+newtype PrivateDataSlot = PrivateDataSlot Word64
+  deriving newtype (Eq, Ord, Storable, Zero)
+  deriving anyclass (IsHandle)
+instance HasObjectType PrivateDataSlot where
+  objectTypeAndHandle (PrivateDataSlot h) = (OBJECT_TYPE_PRIVATE_DATA_SLOT, h)
+instance Show PrivateDataSlot where
+  showsPrec p (PrivateDataSlot x) = showParen (p >= 11) (showString "PrivateDataSlot 0x" . showHex x)
+
diff --git a/src/Vulkan/Core13/Handles.hs-boot b/src/Vulkan/Core13/Handles.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Handles.hs-boot
@@ -0,0 +1,8 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Handles"
+module Vulkan.Core13.Handles  (PrivateDataSlot) where
+
+
+
+data PrivateDataSlot
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state.hs
@@ -0,0 +1,1294 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_extended_dynamic_state"
+module Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state  ( cmdSetCullMode
+                                                                  , cmdSetFrontFace
+                                                                  , cmdSetPrimitiveTopology
+                                                                  , cmdSetViewportWithCount
+                                                                  , cmdSetScissorWithCount
+                                                                  , cmdBindVertexBuffers2
+                                                                  , cmdSetDepthTestEnable
+                                                                  , cmdSetDepthWriteEnable
+                                                                  , cmdSetDepthCompareOp
+                                                                  , cmdSetDepthBoundsTestEnable
+                                                                  , cmdSetStencilTestEnable
+                                                                  , cmdSetStencilOp
+                                                                  , DynamicState(..)
+                                                                  ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import qualified Data.Vector (null)
+import Control.Monad.IO.Class (MonadIO)
+import Foreign.Storable (Storable(poke))
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.Handles (Buffer)
+import Vulkan.Core10.Handles (Buffer(..))
+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.Enums.CompareOp (CompareOp)
+import Vulkan.Core10.Enums.CompareOp (CompareOp(..))
+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlagBits(..))
+import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBindVertexBuffers2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetCullMode))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBoundsTestEnable))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthCompareOp))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthTestEnable))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthWriteEnable))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetFrontFace))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPrimitiveTopology))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetScissorWithCount))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilOp))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilTestEnable))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewportWithCount))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.FrontFace (FrontFace)
+import Vulkan.Core10.Enums.FrontFace (FrontFace(..))
+import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)
+import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology(..))
+import Vulkan.Core10.FundamentalTypes (Rect2D)
+import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlagBits(..))
+import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)
+import Vulkan.Core10.Enums.StencilOp (StencilOp)
+import Vulkan.Core10.Enums.StencilOp (StencilOp(..))
+import Vulkan.Core10.Pipeline (Viewport)
+import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetCullMode
+  :: FunPtr (Ptr CommandBuffer_T -> CullModeFlags -> IO ()) -> Ptr CommandBuffer_T -> CullModeFlags -> IO ()
+
+-- | vkCmdSetCullMode - Set cull mode dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the cull mode for subsequent drawing commands when the
+-- graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@cullMode@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetCullMode-None-03384# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetCullMode-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetCullMode-cullMode-parameter# @cullMode@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits' values
+--
+-- -   #VUID-vkCmdSetCullMode-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-vkCmdSetCullMode-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags'
+cmdSetCullMode :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer into which the command will be
+                  -- recorded.
+                  CommandBuffer
+               -> -- | @cullMode@ specifies the cull mode property to use for drawing.
+                  CullModeFlags
+               -> io ()
+cmdSetCullMode commandBuffer cullMode = liftIO $ do
+  let vkCmdSetCullModePtr = pVkCmdSetCullMode (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetCullModePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetCullMode is null" Nothing Nothing
+  let vkCmdSetCullMode' = mkVkCmdSetCullMode vkCmdSetCullModePtr
+  traceAroundEvent "vkCmdSetCullMode" (vkCmdSetCullMode' (commandBufferHandle (commandBuffer)) (cullMode))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetFrontFace
+  :: FunPtr (Ptr CommandBuffer_T -> FrontFace -> IO ()) -> Ptr CommandBuffer_T -> FrontFace -> IO ()
+
+-- | vkCmdSetFrontFace - Set front face orientation dynamically for a command
+-- buffer
+--
+-- = Description
+--
+-- This command sets the front face orientation for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@frontFace@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetFrontFace-None-03383# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetFrontFace-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetFrontFace-frontFace-parameter# @frontFace@ /must/ be a
+--     valid 'Vulkan.Core10.Enums.FrontFace.FrontFace' value
+--
+-- -   #VUID-vkCmdSetFrontFace-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-vkCmdSetFrontFace-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.FrontFace.FrontFace'
+cmdSetFrontFace :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command will be
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @frontFace@ is a 'Vulkan.Core10.Enums.FrontFace.FrontFace' value
+                   -- specifying the front-facing triangle orientation to be used for culling.
+                   FrontFace
+                -> io ()
+cmdSetFrontFace commandBuffer frontFace = liftIO $ do
+  let vkCmdSetFrontFacePtr = pVkCmdSetFrontFace (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetFrontFacePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetFrontFace is null" Nothing Nothing
+  let vkCmdSetFrontFace' = mkVkCmdSetFrontFace vkCmdSetFrontFacePtr
+  traceAroundEvent "vkCmdSetFrontFace" (vkCmdSetFrontFace' (commandBufferHandle (commandBuffer)) (frontFace))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetPrimitiveTopology
+  :: FunPtr (Ptr CommandBuffer_T -> PrimitiveTopology -> IO ()) -> Ptr CommandBuffer_T -> PrimitiveTopology -> IO ()
+
+-- | vkCmdSetPrimitiveTopology - Set primitive topology state dynamically for
+-- a command buffer
+--
+-- = Description
+--
+-- This command sets the primitive topology for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetPrimitiveTopology-None-03347# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetPrimitiveTopology-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetPrimitiveTopology-primitiveTopology-parameter#
+--     @primitiveTopology@ /must/ be a valid
+--     'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' value
+--
+-- -   #VUID-vkCmdSetPrimitiveTopology-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-vkCmdSetPrimitiveTopology-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology'
+cmdSetPrimitiveTopology :: forall io
+                         . (MonadIO io)
+                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                           -- recorded.
+                           CommandBuffer
+                        -> -- | @primitiveTopology@ specifies the primitive topology to use for drawing.
+                           PrimitiveTopology
+                        -> io ()
+cmdSetPrimitiveTopology commandBuffer primitiveTopology = liftIO $ do
+  let vkCmdSetPrimitiveTopologyPtr = pVkCmdSetPrimitiveTopology (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetPrimitiveTopologyPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetPrimitiveTopology is null" Nothing Nothing
+  let vkCmdSetPrimitiveTopology' = mkVkCmdSetPrimitiveTopology vkCmdSetPrimitiveTopologyPtr
+  traceAroundEvent "vkCmdSetPrimitiveTopology" (vkCmdSetPrimitiveTopology' (commandBufferHandle (commandBuffer)) (primitiveTopology))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetViewportWithCount
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Viewport -> IO ()
+
+-- | vkCmdSetViewportWithCount - Set the viewport count and viewports
+-- dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the viewport count and viewports state for subsequent
+-- drawing commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the corresponding
+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
+-- and @pViewports@ values used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetViewportWithCount-None-03393# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetViewportWithCount-viewportCount-03394# @viewportCount@
+--     /must/ be between @1@ and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
+--     inclusive
+--
+-- -   #VUID-vkCmdSetViewportWithCount-viewportCount-03395# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     feature is not enabled, @viewportCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdSetViewportWithCount-commandBuffer-04819# @commandBuffer@
+--     /must/ not have
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetViewportWithCount-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetViewportWithCount-pViewports-parameter# @pViewports@
+--     /must/ be a valid pointer to an array of @viewportCount@ valid
+--     'Vulkan.Core10.Pipeline.Viewport' structures
+--
+-- -   #VUID-vkCmdSetViewportWithCount-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-vkCmdSetViewportWithCount-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdSetViewportWithCount-viewportCount-arraylength#
+--     @viewportCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Pipeline.Viewport'
+cmdSetViewportWithCount :: forall io
+                         . (MonadIO io)
+                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                           -- recorded.
+                           CommandBuffer
+                        -> -- | @pViewports@ specifies the viewports to use for drawing.
+                           ("viewports" ::: Vector Viewport)
+                        -> io ()
+cmdSetViewportWithCount commandBuffer viewports = liftIO . evalContT $ do
+  let vkCmdSetViewportWithCountPtr = pVkCmdSetViewportWithCount (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetViewportWithCountPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewportWithCount is null" Nothing Nothing
+  let vkCmdSetViewportWithCount' = mkVkCmdSetViewportWithCount vkCmdSetViewportWithCountPtr
+  pPViewports <- ContT $ allocaBytes @Viewport ((Data.Vector.length (viewports)) * 24)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)
+  lift $ traceAroundEvent "vkCmdSetViewportWithCount" (vkCmdSetViewportWithCount' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetScissorWithCount
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Rect2D -> IO ()
+
+-- | vkCmdSetScissorWithCount - Set the scissor count and scissor rectangular
+-- bounds dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the scissor count and scissor rectangular bounds state
+-- for subsequence drawing commands when the graphics pipeline is created
+-- with 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the corresponding
+-- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
+-- and @pScissors@ values used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetScissorWithCount-None-03396# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetScissorWithCount-scissorCount-03397# @scissorCount@
+--     /must/ be between @1@ and
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
+--     inclusive
+--
+-- -   #VUID-vkCmdSetScissorWithCount-scissorCount-03398# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     feature is not enabled, @scissorCount@ /must/ be @1@
+--
+-- -   #VUID-vkCmdSetScissorWithCount-x-03399# The @x@ and @y@ members of
+--     @offset@ member of any element of @pScissors@ /must/ be greater than
+--     or equal to @0@
+--
+-- -   #VUID-vkCmdSetScissorWithCount-offset-03400# Evaluation of
+--     (@offset.x@ + @extent.width@) /must/ not cause a signed integer
+--     addition overflow for any element of @pScissors@
+--
+-- -   #VUID-vkCmdSetScissorWithCount-offset-03401# Evaluation of
+--     (@offset.y@ + @extent.height@) /must/ not cause a signed integer
+--     addition overflow for any element of @pScissors@
+--
+-- -   #VUID-vkCmdSetScissorWithCount-commandBuffer-04820# @commandBuffer@
+--     /must/ not have
+--     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
+--     enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetScissorWithCount-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetScissorWithCount-pScissors-parameter# @pScissors@
+--     /must/ be a valid pointer to an array of @scissorCount@
+--     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
+--
+-- -   #VUID-vkCmdSetScissorWithCount-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-vkCmdSetScissorWithCount-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdSetScissorWithCount-scissorCount-arraylength#
+--     @scissorCount@ /must/ be greater than @0@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D'
+cmdSetScissorWithCount :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer into which the command will be
+                          -- recorded.
+                          CommandBuffer
+                       -> -- | @pScissors@ specifies the scissors to use for drawing.
+                          ("scissors" ::: Vector Rect2D)
+                       -> io ()
+cmdSetScissorWithCount commandBuffer scissors = liftIO . evalContT $ do
+  let vkCmdSetScissorWithCountPtr = pVkCmdSetScissorWithCount (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetScissorWithCountPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissorWithCount is null" Nothing Nothing
+  let vkCmdSetScissorWithCount' = mkVkCmdSetScissorWithCount vkCmdSetScissorWithCountPtr
+  pPScissors <- ContT $ allocaBytes @Rect2D ((Data.Vector.length (scissors)) * 16)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)
+  lift $ traceAroundEvent "vkCmdSetScissorWithCount" (vkCmdSetScissorWithCount' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBindVertexBuffers2
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()
+
+-- | vkCmdBindVertexBuffers2 - Bind vertex buffers to a command buffer and
+-- dynamically set strides
+--
+-- = Description
+--
+-- The values taken from elements i of @pBuffers@ and @pOffsets@ replace
+-- the current state for the vertex input binding @firstBinding@ + i, for i
+-- in [0, @bindingCount@). The vertex input binding is updated to start at
+-- the offset indicated by @pOffsets@[i] from the start of the buffer
+-- @pBuffers@[i]. If @pSizes@ is not @NULL@ then @pSizes@[i] specifies the
+-- bound size of the vertex buffer starting from the corresponding elements
+-- of @pBuffers@[i] plus @pOffsets@[i]. All vertex input attributes that
+-- use each of these bindings will use these updated addresses in their
+-- address calculations for subsequent drawing commands. If the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+-- feature is enabled, elements of @pBuffers@ /can/ be
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by the
+-- vertex shader. If a vertex input attribute is bound to a vertex input
+-- binding that is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the values
+-- taken from memory are considered to be zero, and missing G, B, or A
+-- components are
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.
+--
+-- This command also \<pipelines-dynamic-state, dynamically sets>> the byte
+-- strides between consecutive elements within buffer @pBuffers@[i] to the
+-- corresponding @pStrides@[i] value when the graphics pipeline is created
+-- with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, strides are specified by the
+-- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@stride@ values
+-- used to create the currently active pipeline.
+--
+-- If the bound pipeline state object was also created with the
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
+-- dynamic state enabled then
+-- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
+-- /can/ be used instead of 'cmdBindVertexBuffers2' to set the stride.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-firstBinding-03355# @firstBinding@
+--     /must/ be less than
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-firstBinding-03356# The sum of
+--     @firstBinding@ and @bindingCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pOffsets-03357# All elements of
+--     @pOffsets@ /must/ be less than the size of the corresponding element
+--     in @pBuffers@
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pSizes-03358# If @pSizes@ is not
+--     @NULL@, all elements of @pOffsets@ plus @pSizes@ /must/ be less than
+--     or equal to the size of the corresponding element in @pBuffers@
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pBuffers-03359# All elements of
+--     @pBuffers@ /must/ have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
+--     flag
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pBuffers-03360# Each element of
+--     @pBuffers@ that is non-sparse /must/ be bound completely and
+--     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pBuffers-04111# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     feature is not enabled, all elements of @pBuffers@ /must/ not be
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pBuffers-04112# If an element of
+--     @pBuffers@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
+--     corresponding element of @pOffsets@ /must/ be zero
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pStrides-03362# If @pStrides@ is not
+--     @NULL@ each element of @pStrides@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pStrides-06209# If @pStrides@ is not
+--     @NULL@ each element of @pStrides@ /must/ be either 0 or greater than
+--     or equal to the maximum extent of all vertex input attributes
+--     fetched from the corresponding binding, where the extent is
+--     calculated as the
+--     'Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@offset@
+--     plus
+--     'Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@
+--     size
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pBuffers-parameter# @pBuffers@ /must/
+--     be a valid pointer to an array of @bindingCount@ valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Core10.Handles.Buffer' handles
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pOffsets-parameter# @pOffsets@ /must/
+--     be a valid pointer to an array of @bindingCount@
+--     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pSizes-parameter# If @pSizes@ is not
+--     @NULL@, @pSizes@ /must/ be a valid pointer to an array of
+--     @bindingCount@ 'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-pStrides-parameter# If @pStrides@ is
+--     not @NULL@, @pStrides@ /must/ be a valid pointer to an array of
+--     @bindingCount@ 'Vulkan.Core10.FundamentalTypes.DeviceSize' values
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-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-vkCmdBindVertexBuffers2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-bindingCount-arraylength# If any of
+--     @pSizes@, or @pStrides@ are not @NULL@, @bindingCount@ /must/ be
+--     greater than @0@
+--
+-- -   #VUID-vkCmdBindVertexBuffers2-commonparent# Both of @commandBuffer@,
+--     and the elements of @pBuffers@ that are valid handles of non-ignored
+--     parameters /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
+cmdBindVertexBuffers2 :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer into which the command is
+                         -- recorded.
+                         CommandBuffer
+                      -> -- | @firstBinding@ is the index of the first vertex input binding whose
+                         -- state is updated by the command.
+                         ("firstBinding" ::: Word32)
+                      -> -- | @pBuffers@ is a pointer to an array of buffer handles.
+                         ("buffers" ::: Vector Buffer)
+                      -> -- | @pOffsets@ is a pointer to an array of buffer offsets.
+                         ("offsets" ::: Vector DeviceSize)
+                      -> -- | @pSizes@ is @NULL@ or a pointer to an array of the size in bytes of
+                         -- vertex data bound from @pBuffers@.
+                         ("sizes" ::: Vector DeviceSize)
+                      -> -- | @pStrides@ is @NULL@ or a pointer to an array of buffer strides.
+                         ("strides" ::: Vector DeviceSize)
+                      -> io ()
+cmdBindVertexBuffers2 commandBuffer firstBinding buffers offsets sizes strides = liftIO . evalContT $ do
+  let vkCmdBindVertexBuffers2Ptr = pVkCmdBindVertexBuffers2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBindVertexBuffers2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindVertexBuffers2 is null" Nothing Nothing
+  let vkCmdBindVertexBuffers2' = mkVkCmdBindVertexBuffers2 vkCmdBindVertexBuffers2Ptr
+  let pBuffersLength = Data.Vector.length $ (buffers)
+  lift $ unless ((Data.Vector.length $ (offsets)) == pBuffersLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing
+  let pSizesLength = Data.Vector.length $ (sizes)
+  lift $ unless (fromIntegral pSizesLength == pBuffersLength || pSizesLength == 0) $
+    throwIO $ IOError Nothing InvalidArgument "" "pSizes and pBuffers must have the same length" Nothing Nothing
+  let pStridesLength = Data.Vector.length $ (strides)
+  lift $ unless (fromIntegral pStridesLength == pBuffersLength || pStridesLength == 0) $
+    throwIO $ IOError Nothing InvalidArgument "" "pStrides and pBuffers must have the same length" Nothing Nothing
+  pPBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (buffers)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)
+  pPOffsets <- ContT $ allocaBytes @DeviceSize ((Data.Vector.length (offsets)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)
+  pSizes <- if Data.Vector.null (sizes)
+    then pure nullPtr
+    else do
+      pPSizes <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (sizes))) * 8)
+      lift $ Data.Vector.imapM_ (\i e -> poke (pPSizes `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((sizes))
+      pure $ pPSizes
+  pStrides <- if Data.Vector.null (strides)
+    then pure nullPtr
+    else do
+      pPStrides <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (strides))) * 8)
+      lift $ Data.Vector.imapM_ (\i e -> poke (pPStrides `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((strides))
+      pure $ pPStrides
+  lift $ traceAroundEvent "vkCmdBindVertexBuffers2" (vkCmdBindVertexBuffers2' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets) pSizes pStrides)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthTestEnable
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetDepthTestEnable - Set depth test enable dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the depth test enable for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthTestEnable@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthTestEnable-None-03352# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthTestEnable-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthTestEnable-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-vkCmdSetDepthTestEnable-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetDepthTestEnable :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer into which the command will be
+                         -- recorded.
+                         CommandBuffer
+                      -> -- | @depthTestEnable@ specifies if the depth test is enabled.
+                         ("depthTestEnable" ::: Bool)
+                      -> io ()
+cmdSetDepthTestEnable commandBuffer depthTestEnable = liftIO $ do
+  let vkCmdSetDepthTestEnablePtr = pVkCmdSetDepthTestEnable (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetDepthTestEnablePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthTestEnable is null" Nothing Nothing
+  let vkCmdSetDepthTestEnable' = mkVkCmdSetDepthTestEnable vkCmdSetDepthTestEnablePtr
+  traceAroundEvent "vkCmdSetDepthTestEnable" (vkCmdSetDepthTestEnable' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthTestEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthWriteEnable
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetDepthWriteEnable - Set depth write enable dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the depth write enable for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthWriteEnable@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthWriteEnable-None-03354# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthWriteEnable-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthWriteEnable-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-vkCmdSetDepthWriteEnable-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetDepthWriteEnable :: forall io
+                        . (MonadIO io)
+                       => -- | @commandBuffer@ is the command buffer into which the command will be
+                          -- recorded.
+                          CommandBuffer
+                       -> -- | @depthWriteEnable@ specifies if depth writes are enabled.
+                          ("depthWriteEnable" ::: Bool)
+                       -> io ()
+cmdSetDepthWriteEnable commandBuffer depthWriteEnable = liftIO $ do
+  let vkCmdSetDepthWriteEnablePtr = pVkCmdSetDepthWriteEnable (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetDepthWriteEnablePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthWriteEnable is null" Nothing Nothing
+  let vkCmdSetDepthWriteEnable' = mkVkCmdSetDepthWriteEnable vkCmdSetDepthWriteEnablePtr
+  traceAroundEvent "vkCmdSetDepthWriteEnable" (vkCmdSetDepthWriteEnable' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthWriteEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthCompareOp
+  :: FunPtr (Ptr CommandBuffer_T -> CompareOp -> IO ()) -> Ptr CommandBuffer_T -> CompareOp -> IO ()
+
+-- | vkCmdSetDepthCompareOp - Set depth comparison operator dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the depth comparison operator for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthCompareOp@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthCompareOp-None-03353# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthCompareOp-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthCompareOp-depthCompareOp-parameter#
+--     @depthCompareOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+--
+-- -   #VUID-vkCmdSetDepthCompareOp-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-vkCmdSetDepthCompareOp-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.CompareOp.CompareOp'
+cmdSetDepthCompareOp :: forall io
+                      . (MonadIO io)
+                     => -- | @commandBuffer@ is the command buffer into which the command will be
+                        -- recorded.
+                        CommandBuffer
+                     -> -- | @depthCompareOp@ specifies the depth comparison operator.
+                        ("depthCompareOp" ::: CompareOp)
+                     -> io ()
+cmdSetDepthCompareOp commandBuffer depthCompareOp = liftIO $ do
+  let vkCmdSetDepthCompareOpPtr = pVkCmdSetDepthCompareOp (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetDepthCompareOpPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthCompareOp is null" Nothing Nothing
+  let vkCmdSetDepthCompareOp' = mkVkCmdSetDepthCompareOp vkCmdSetDepthCompareOpPtr
+  traceAroundEvent "vkCmdSetDepthCompareOp" (vkCmdSetDepthCompareOp' (commandBufferHandle (commandBuffer)) (depthCompareOp))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthBoundsTestEnable
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetDepthBoundsTestEnable - Set depth bounds test enable dynamically
+-- for a command buffer
+--
+-- = Description
+--
+-- This command sets the depth bounds enable for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthBoundsTestEnable@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthBoundsTestEnable-None-03349# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthBoundsTestEnable-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-vkCmdSetDepthBoundsTestEnable-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetDepthBoundsTestEnable :: forall io
+                             . (MonadIO io)
+                            => -- | @commandBuffer@ is the command buffer into which the command will be
+                               -- recorded.
+                               CommandBuffer
+                            -> -- | @depthBoundsTestEnable@ specifies if the depth bounds test is enabled.
+                               ("depthBoundsTestEnable" ::: Bool)
+                            -> io ()
+cmdSetDepthBoundsTestEnable commandBuffer depthBoundsTestEnable = liftIO $ do
+  let vkCmdSetDepthBoundsTestEnablePtr = pVkCmdSetDepthBoundsTestEnable (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetDepthBoundsTestEnablePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBoundsTestEnable is null" Nothing Nothing
+  let vkCmdSetDepthBoundsTestEnable' = mkVkCmdSetDepthBoundsTestEnable vkCmdSetDepthBoundsTestEnablePtr
+  traceAroundEvent "vkCmdSetDepthBoundsTestEnable" (vkCmdSetDepthBoundsTestEnable' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthBoundsTestEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilTestEnable
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetStencilTestEnable - Set stencil test enable dynamically for a
+-- command buffer
+--
+-- = Description
+--
+-- This command sets the stencil test enable for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetStencilTestEnable-None-03350# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetStencilTestEnable-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetStencilTestEnable-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-vkCmdSetStencilTestEnable-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetStencilTestEnable :: forall io
+                         . (MonadIO io)
+                        => -- | @commandBuffer@ is the command buffer into which the command will be
+                           -- recorded.
+                           CommandBuffer
+                        -> -- | @stencilTestEnable@ specifies if the stencil test is enabled.
+                           ("stencilTestEnable" ::: Bool)
+                        -> io ()
+cmdSetStencilTestEnable commandBuffer stencilTestEnable = liftIO $ do
+  let vkCmdSetStencilTestEnablePtr = pVkCmdSetStencilTestEnable (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetStencilTestEnablePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilTestEnable is null" Nothing Nothing
+  let vkCmdSetStencilTestEnable' = mkVkCmdSetStencilTestEnable vkCmdSetStencilTestEnablePtr
+  traceAroundEvent "vkCmdSetStencilTestEnable" (vkCmdSetStencilTestEnable' (commandBufferHandle (commandBuffer)) (boolToBool32 (stencilTestEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetStencilOp
+  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> StencilOp -> StencilOp -> StencilOp -> CompareOp -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> StencilOp -> StencilOp -> StencilOp -> CompareOp -> IO ()
+
+-- | vkCmdSetStencilOp - Set stencil operation dynamically for a command
+-- buffer
+--
+-- = Description
+--
+-- This command sets the stencil operation for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP' set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the corresponding
+-- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@failOp@,
+-- @passOp@, @depthFailOp@, and @compareOp@ values used to create the
+-- currently active pipeline, for both front and back faces.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetStencilOp-None-03351# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetStencilOp-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetStencilOp-faceMask-parameter# @faceMask@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
+--
+-- -   #VUID-vkCmdSetStencilOp-faceMask-requiredbitmask# @faceMask@ /must/
+--     not be @0@
+--
+-- -   #VUID-vkCmdSetStencilOp-failOp-parameter# @failOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.StencilOp.StencilOp' value
+--
+-- -   #VUID-vkCmdSetStencilOp-passOp-parameter# @passOp@ /must/ be a valid
+--     'Vulkan.Core10.Enums.StencilOp.StencilOp' value
+--
+-- -   #VUID-vkCmdSetStencilOp-depthFailOp-parameter# @depthFailOp@ /must/
+--     be a valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
+--
+-- -   #VUID-vkCmdSetStencilOp-compareOp-parameter# @compareOp@ /must/ be a
+--     valid 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+--
+-- -   #VUID-vkCmdSetStencilOp-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-vkCmdSetStencilOp-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.CompareOp.CompareOp',
+-- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags',
+-- 'Vulkan.Core10.Enums.StencilOp.StencilOp'
+cmdSetStencilOp :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer into which the command will be
+                   -- recorded.
+                   CommandBuffer
+                -> -- | @faceMask@ is a bitmask of
+                   -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
+                   -- the set of stencil state for which to update the stencil operation.
+                   ("faceMask" ::: StencilFaceFlags)
+                -> -- | @failOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying
+                   -- the action performed on samples that fail the stencil test.
+                   ("failOp" ::: StencilOp)
+                -> -- | @passOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying
+                   -- the action performed on samples that pass both the depth and stencil
+                   -- tests.
+                   ("passOp" ::: StencilOp)
+                -> -- | @depthFailOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
+                   -- specifying the action performed on samples that pass the stencil test
+                   -- and fail the depth test.
+                   ("depthFailOp" ::: StencilOp)
+                -> -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
+                   -- specifying the comparison operator used in the stencil test.
+                   CompareOp
+                -> io ()
+cmdSetStencilOp commandBuffer faceMask failOp passOp depthFailOp compareOp = liftIO $ do
+  let vkCmdSetStencilOpPtr = pVkCmdSetStencilOp (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetStencilOpPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilOp is null" Nothing Nothing
+  let vkCmdSetStencilOp' = mkVkCmdSetStencilOp vkCmdSetStencilOpPtr
+  traceAroundEvent "vkCmdSetStencilOp" (vkCmdSetStencilOp' (commandBufferHandle (commandBuffer)) (faceMask) (failOp) (passOp) (depthFailOp) (compareOp))
+  pure $ ()
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state2.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_extended_dynamic_state2.hs
@@ -0,0 +1,280 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_extended_dynamic_state2"
+module Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2  ( cmdSetRasterizerDiscardEnable
+                                                                   , cmdSetDepthBiasEnable
+                                                                   , cmdSetPrimitiveRestartEnable
+                                                                   , DynamicState(..)
+                                                                   ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Control.Monad.IO.Class (MonadIO)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (Bool32(..))
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBiasEnable))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPrimitiveRestartEnable))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRasterizerDiscardEnable))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetRasterizerDiscardEnable
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetRasterizerDiscardEnable - Control whether primitives are
+-- discarded before the rasterization stage dynamically for a command
+-- buffer
+--
+-- = Description
+--
+-- This command sets the discard enable for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetRasterizerDiscardEnable-None-04871# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetRasterizerDiscardEnable-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-vkCmdSetRasterizerDiscardEnable-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 VK_EXT_extended_dynamic_state2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetRasterizerDiscardEnable :: forall io
+                               . (MonadIO io)
+                              => -- | @commandBuffer@ is the command buffer into which the command will be
+                                 -- recorded.
+                                 CommandBuffer
+                              -> -- | @rasterizerDiscardEnable@ controls whether primitives are discarded
+                                 -- immediately before the rasterization stage.
+                                 ("rasterizerDiscardEnable" ::: Bool)
+                              -> io ()
+cmdSetRasterizerDiscardEnable commandBuffer rasterizerDiscardEnable = liftIO $ do
+  let vkCmdSetRasterizerDiscardEnablePtr = pVkCmdSetRasterizerDiscardEnable (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetRasterizerDiscardEnablePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRasterizerDiscardEnable is null" Nothing Nothing
+  let vkCmdSetRasterizerDiscardEnable' = mkVkCmdSetRasterizerDiscardEnable vkCmdSetRasterizerDiscardEnablePtr
+  traceAroundEvent "vkCmdSetRasterizerDiscardEnable" (vkCmdSetRasterizerDiscardEnable' (commandBufferHandle (commandBuffer)) (boolToBool32 (rasterizerDiscardEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetDepthBiasEnable
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetDepthBiasEnable - Control whether to bias fragment depth values
+-- dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the depth bias enable for subsequent drawing commands
+-- when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE' set
+-- in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthBiasEnable@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetDepthBiasEnable-None-04872# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetDepthBiasEnable-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetDepthBiasEnable-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-vkCmdSetDepthBiasEnable-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 VK_EXT_extended_dynamic_state2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetDepthBiasEnable :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer into which the command will be
+                         -- recorded.
+                         CommandBuffer
+                      -> -- | @depthBiasEnable@ controls whether to bias fragment depth values.
+                         ("depthBiasEnable" ::: Bool)
+                      -> io ()
+cmdSetDepthBiasEnable commandBuffer depthBiasEnable = liftIO $ do
+  let vkCmdSetDepthBiasEnablePtr = pVkCmdSetDepthBiasEnable (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetDepthBiasEnablePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBiasEnable is null" Nothing Nothing
+  let vkCmdSetDepthBiasEnable' = mkVkCmdSetDepthBiasEnable vkCmdSetDepthBiasEnablePtr
+  traceAroundEvent "vkCmdSetDepthBiasEnable" (vkCmdSetDepthBiasEnable' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthBiasEnable)))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetPrimitiveRestartEnable
+  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+
+-- | vkCmdSetPrimitiveRestartEnable - Set primitive assembly restart state
+-- dynamically for a command buffer
+--
+-- = Description
+--
+-- This command sets the primitive restart enable for subsequent drawing
+-- commands when the graphics pipeline is created with
+-- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
+-- set in
+-- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
+-- Otherwise, this state is specified by the
+-- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
+-- value used to create the currently active pipeline.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartEnable-None-04866# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetPrimitiveRestartEnable-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-vkCmdSetPrimitiveRestartEnable-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 VK_EXT_extended_dynamic_state2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdSetPrimitiveRestartEnable :: forall io
+                              . (MonadIO io)
+                             => -- | @commandBuffer@ is the command buffer into which the command will be
+                                -- recorded.
+                                CommandBuffer
+                             -> -- | @primitiveRestartEnable@ controls whether a special vertex index value
+                                -- is treated as restarting the assembly of primitives. It behaves in the
+                                -- same way as
+                                -- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
+                                ("primitiveRestartEnable" ::: Bool)
+                             -> io ()
+cmdSetPrimitiveRestartEnable commandBuffer primitiveRestartEnable = liftIO $ do
+  let vkCmdSetPrimitiveRestartEnablePtr = pVkCmdSetPrimitiveRestartEnable (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdSetPrimitiveRestartEnablePtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetPrimitiveRestartEnable is null" Nothing Nothing
+  let vkCmdSetPrimitiveRestartEnable' = mkVkCmdSetPrimitiveRestartEnable vkCmdSetPrimitiveRestartEnablePtr
+  traceAroundEvent "vkCmdSetPrimitiveRestartEnable" (vkCmdSetPrimitiveRestartEnable' (commandBufferHandle (commandBuffer)) (boolToBool32 (primitiveRestartEnable)))
+  pure $ ()
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs
@@ -0,0 +1,103 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_image_robustness"
+module Vulkan.Core13.Promoted_From_VK_EXT_image_robustness  ( PhysicalDeviceImageRobustnessFeatures(..)
+                                                            , StructureType(..)
+                                                            ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceImageRobustnessFeatures - Structure describing the
+-- out-of-bounds behavior for an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceImageRobustnessFeatures' 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. 'PhysicalDeviceImageRobustnessFeatures' /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_image_robustness VK_EXT_image_robustness>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceImageRobustnessFeatures = PhysicalDeviceImageRobustnessFeatures
+  { -- | #extension-features-robustImageAccess# @robustImageAccess@ indicates
+    -- whether image accesses are tightly bounds-checked against the dimensions
+    -- of the image view.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-input-validation Invalid texels>
+    -- resulting from out of bounds image loads will be replaced as described
+    -- in
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>,
+    -- with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A
+    -- components based on the format.
+    robustImageAccess :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceImageRobustnessFeatures)
+#endif
+deriving instance Show PhysicalDeviceImageRobustnessFeatures
+
+instance ToCStruct PhysicalDeviceImageRobustnessFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceImageRobustnessFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (robustImageAccess))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceImageRobustnessFeatures where
+  peekCStruct p = do
+    robustImageAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceImageRobustnessFeatures
+             (bool32ToBool robustImageAccess)
+
+instance Storable PhysicalDeviceImageRobustnessFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceImageRobustnessFeatures where
+  zero = PhysicalDeviceImageRobustnessFeatures
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_image_robustness.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_image_robustness"
+module Vulkan.Core13.Promoted_From_VK_EXT_image_robustness  (PhysicalDeviceImageRobustnessFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceImageRobustnessFeatures
+
+instance ToCStruct PhysicalDeviceImageRobustnessFeatures
+instance Show PhysicalDeviceImageRobustnessFeatures
+
+instance FromCStruct PhysicalDeviceImageRobustnessFeatures
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs
@@ -0,0 +1,352 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_inline_uniform_block"
+module Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block  ( PhysicalDeviceInlineUniformBlockFeatures(..)
+                                                                , PhysicalDeviceInlineUniformBlockProperties(..)
+                                                                , WriteDescriptorSetInlineUniformBlock(..)
+                                                                , DescriptorPoolInlineUniformBlockCreateInfo(..)
+                                                                , DescriptorType(..)
+                                                                , StructureType(..)
+                                                                ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK))
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceInlineUniformBlockFeatures - Structure describing inline
+-- uniform block features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceInlineUniformBlockFeatures' 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. 'PhysicalDeviceInlineUniformBlockFeatures' /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_inline_uniform_block VK_EXT_inline_uniform_block>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceInlineUniformBlockFeatures = PhysicalDeviceInlineUniformBlockFeatures
+  { -- | #extension-features-inlineUniformBlock# @inlineUniformBlock@ indicates
+    -- whether the implementation supports inline uniform block descriptors. If
+    -- this feature is not enabled,
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+    -- /must/ not be used.
+    inlineUniformBlock :: Bool
+  , -- | #extension-features-descriptorBindingInlineUniformBlockUpdateAfterBind#
+    -- @descriptorBindingInlineUniformBlockUpdateAfterBind@ indicates whether
+    -- the implementation supports updating inline uniform block descriptors
+    -- after a set is bound. If this feature is not enabled,
+    -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
+    -- /must/ not be used with
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'.
+    descriptorBindingInlineUniformBlockUpdateAfterBind :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceInlineUniformBlockFeatures)
+#endif
+deriving instance Show PhysicalDeviceInlineUniformBlockFeatures
+
+instance ToCStruct PhysicalDeviceInlineUniformBlockFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceInlineUniformBlockFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (inlineUniformBlock))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (descriptorBindingInlineUniformBlockUpdateAfterBind))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceInlineUniformBlockFeatures where
+  peekCStruct p = do
+    inlineUniformBlock <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    descriptorBindingInlineUniformBlockUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceInlineUniformBlockFeatures
+             (bool32ToBool inlineUniformBlock) (bool32ToBool descriptorBindingInlineUniformBlockUpdateAfterBind)
+
+instance Storable PhysicalDeviceInlineUniformBlockFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceInlineUniformBlockFeatures where
+  zero = PhysicalDeviceInlineUniformBlockFeatures
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceInlineUniformBlockProperties - Structure describing
+-- inline uniform block properties that can be supported by an
+-- implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceInlineUniformBlockProperties' 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_inline_uniform_block VK_EXT_inline_uniform_block>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceInlineUniformBlockProperties = PhysicalDeviceInlineUniformBlockProperties
+  { -- | #extension-limits-maxInlineUniformBlockSize# @maxInlineUniformBlockSize@
+    -- is the maximum size in bytes of an
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>
+    -- binding.
+    maxInlineUniformBlockSize :: Word32
+  , -- No documentation found for Nested "VkPhysicalDeviceInlineUniformBlockProperties" "maxPerStageDescriptorInlineUniformBlocks"
+    maxPerStageDescriptorInlineUniformBlocks :: Word32
+  , -- | #extension-limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks#
+    -- @maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@ is similar to
+    -- @maxPerStageDescriptorInlineUniformBlocks@ but counts descriptor
+    -- bindings from descriptor sets created with or without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set.
+    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks :: Word32
+  , -- | #extension-limits-maxDescriptorSetInlineUniformBlocks#
+    -- @maxDescriptorSetInlineUniformBlocks@ is the maximum number of inline
+    -- uniform block bindings that /can/ be included in descriptor bindings in
+    -- a pipeline layout across all pipeline shader stages and descriptor set
+    -- numbers. Descriptor bindings with a descriptor type of
+    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
+    -- count against this limit. Only descriptor bindings in descriptor set
+    -- layouts created without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set count against this limit.
+    maxDescriptorSetInlineUniformBlocks :: Word32
+  , -- | #extension-limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks#
+    -- @maxDescriptorSetUpdateAfterBindInlineUniformBlocks@ is similar to
+    -- @maxDescriptorSetInlineUniformBlocks@ but counts descriptor bindings
+    -- from descriptor sets created with or without the
+    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
+    -- bit set.
+    maxDescriptorSetUpdateAfterBindInlineUniformBlocks :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceInlineUniformBlockProperties)
+#endif
+deriving instance Show PhysicalDeviceInlineUniformBlockProperties
+
+instance ToCStruct PhysicalDeviceInlineUniformBlockProperties where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceInlineUniformBlockProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxInlineUniformBlockSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPerStageDescriptorInlineUniformBlocks)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxDescriptorSetInlineUniformBlocks)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInlineUniformBlocks)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceInlineUniformBlockProperties where
+  peekCStruct p = do
+    maxInlineUniformBlockSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxPerStageDescriptorInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    maxDescriptorSetInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    maxDescriptorSetUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pure $ PhysicalDeviceInlineUniformBlockProperties
+             maxInlineUniformBlockSize maxPerStageDescriptorInlineUniformBlocks maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks maxDescriptorSetInlineUniformBlocks maxDescriptorSetUpdateAfterBindInlineUniformBlocks
+
+instance Storable PhysicalDeviceInlineUniformBlockProperties where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceInlineUniformBlockProperties where
+  zero = PhysicalDeviceInlineUniformBlockProperties
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkWriteDescriptorSetInlineUniformBlock - Structure specifying inline
+-- uniform block data
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block VK_EXT_inline_uniform_block>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data WriteDescriptorSetInlineUniformBlock = WriteDescriptorSetInlineUniformBlock
+  { -- | @dataSize@ is the number of bytes of inline uniform block data pointed
+    -- to by @pData@.
+    --
+    -- #VUID-VkWriteDescriptorSetInlineUniformBlock-dataSize-02222# @dataSize@
+    -- /must/ be an integer multiple of @4@
+    --
+    -- #VUID-VkWriteDescriptorSetInlineUniformBlock-dataSize-arraylength#
+    -- @dataSize@ /must/ be greater than @0@
+    dataSize :: Word32
+  , -- | @pData@ is a pointer to @dataSize@ number of bytes of data to write to
+    -- the inline uniform block.
+    --
+    -- #VUID-VkWriteDescriptorSetInlineUniformBlock-pData-parameter# @pData@
+    -- /must/ be a valid pointer to an array of @dataSize@ bytes
+    data' :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (WriteDescriptorSetInlineUniformBlock)
+#endif
+deriving instance Show WriteDescriptorSetInlineUniformBlock
+
+instance ToCStruct WriteDescriptorSetInlineUniformBlock where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p WriteDescriptorSetInlineUniformBlock{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (dataSize)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
+    f
+
+instance FromCStruct WriteDescriptorSetInlineUniformBlock where
+  peekCStruct p = do
+    dataSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ WriteDescriptorSetInlineUniformBlock
+             dataSize pData
+
+instance Storable WriteDescriptorSetInlineUniformBlock where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero WriteDescriptorSetInlineUniformBlock where
+  zero = WriteDescriptorSetInlineUniformBlock
+           zero
+           zero
+
+
+-- | VkDescriptorPoolInlineUniformBlockCreateInfo - Structure specifying the
+-- maximum number of inline uniform block bindings of a newly created
+-- descriptor pool
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block VK_EXT_inline_uniform_block>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DescriptorPoolInlineUniformBlockCreateInfo = DescriptorPoolInlineUniformBlockCreateInfo
+  { -- | @maxInlineUniformBlockBindings@ is the number of inline uniform block
+    -- bindings to allocate.
+    maxInlineUniformBlockBindings :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DescriptorPoolInlineUniformBlockCreateInfo)
+#endif
+deriving instance Show DescriptorPoolInlineUniformBlockCreateInfo
+
+instance ToCStruct DescriptorPoolInlineUniformBlockCreateInfo where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DescriptorPoolInlineUniformBlockCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxInlineUniformBlockBindings)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DescriptorPoolInlineUniformBlockCreateInfo where
+  peekCStruct p = do
+    maxInlineUniformBlockBindings <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ DescriptorPoolInlineUniformBlockCreateInfo
+             maxInlineUniformBlockBindings
+
+instance Storable DescriptorPoolInlineUniformBlockCreateInfo where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DescriptorPoolInlineUniformBlockCreateInfo where
+  zero = DescriptorPoolInlineUniformBlockCreateInfo
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_inline_uniform_block.hs-boot
@@ -0,0 +1,43 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_inline_uniform_block"
+module Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block  ( DescriptorPoolInlineUniformBlockCreateInfo
+                                                                , PhysicalDeviceInlineUniformBlockFeatures
+                                                                , PhysicalDeviceInlineUniformBlockProperties
+                                                                , WriteDescriptorSetInlineUniformBlock
+                                                                ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DescriptorPoolInlineUniformBlockCreateInfo
+
+instance ToCStruct DescriptorPoolInlineUniformBlockCreateInfo
+instance Show DescriptorPoolInlineUniformBlockCreateInfo
+
+instance FromCStruct DescriptorPoolInlineUniformBlockCreateInfo
+
+
+data PhysicalDeviceInlineUniformBlockFeatures
+
+instance ToCStruct PhysicalDeviceInlineUniformBlockFeatures
+instance Show PhysicalDeviceInlineUniformBlockFeatures
+
+instance FromCStruct PhysicalDeviceInlineUniformBlockFeatures
+
+
+data PhysicalDeviceInlineUniformBlockProperties
+
+instance ToCStruct PhysicalDeviceInlineUniformBlockProperties
+instance Show PhysicalDeviceInlineUniformBlockProperties
+
+instance FromCStruct PhysicalDeviceInlineUniformBlockProperties
+
+
+data WriteDescriptorSetInlineUniformBlock
+
+instance ToCStruct WriteDescriptorSetInlineUniformBlock
+instance Show WriteDescriptorSetInlineUniformBlock
+
+instance FromCStruct WriteDescriptorSetInlineUniformBlock
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_cache_control.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_cache_control.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_cache_control.hs
@@ -0,0 +1,120 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_creation_cache_control"
+module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control  ( PhysicalDevicePipelineCreationCacheControlFeatures(..)
+                                                                           , PipelineCacheCreateFlagBits(..)
+                                                                           , PipelineCacheCreateFlags
+                                                                           , StructureType(..)
+                                                                           , Result(..)
+                                                                           , PipelineCreateFlagBits(..)
+                                                                           , PipelineCreateFlags
+                                                                           ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES))
+import Vulkan.Core10.Enums.PipelineCacheCreateFlagBits (PipelineCacheCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineCacheCreateFlagBits (PipelineCacheCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDevicePipelineCreationCacheControlFeatures - Structure
+-- describing whether pipeline cache control can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePipelineCreationCacheControlFeatures' 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. 'PhysicalDevicePipelineCreationCacheControlFeatures' /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_pipeline_creation_cache_control VK_EXT_pipeline_creation_cache_control>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePipelineCreationCacheControlFeatures = PhysicalDevicePipelineCreationCacheControlFeatures
+  { -- | #extension-features-pipelineCreationCacheControl#
+    -- @pipelineCreationCacheControl@ indicates that the implementation
+    -- supports:
+    --
+    -- -   The following /can/ be used in @Vk*PipelineCreateInfo@::@flags@:
+    --
+    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
+    --
+    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
+    --
+    -- -   The following /can/ be used in
+    --     'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo'::@flags@:
+    --
+    --     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT'
+    pipelineCreationCacheControl :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePipelineCreationCacheControlFeatures)
+#endif
+deriving instance Show PhysicalDevicePipelineCreationCacheControlFeatures
+
+instance ToCStruct PhysicalDevicePipelineCreationCacheControlFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePipelineCreationCacheControlFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineCreationCacheControl))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePipelineCreationCacheControlFeatures where
+  peekCStruct p = do
+    pipelineCreationCacheControl <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePipelineCreationCacheControlFeatures
+             (bool32ToBool pipelineCreationCacheControl)
+
+instance Storable PhysicalDevicePipelineCreationCacheControlFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePipelineCreationCacheControlFeatures where
+  zero = PhysicalDevicePipelineCreationCacheControlFeatures
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_cache_control.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_cache_control.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_cache_control.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_creation_cache_control"
+module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control  (PhysicalDevicePipelineCreationCacheControlFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDevicePipelineCreationCacheControlFeatures
+
+instance ToCStruct PhysicalDevicePipelineCreationCacheControlFeatures
+instance Show PhysicalDevicePipelineCreationCacheControlFeatures
+
+instance FromCStruct PhysicalDevicePipelineCreationCacheControlFeatures
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs
@@ -0,0 +1,243 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_creation_feedback"
+module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback  ( PipelineCreationFeedback(..)
+                                                                      , PipelineCreationFeedbackCreateInfo(..)
+                                                                      , StructureType(..)
+                                                                      , PipelineCreationFeedbackFlagBits(..)
+                                                                      , PipelineCreationFeedbackFlags
+                                                                      ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Data.Kind (Type)
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO))
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlagBits(..))
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPipelineCreationFeedback - Feedback about the creation of a pipeline
+-- or pipeline stage
+--
+-- = Description
+--
+-- If the
+-- 'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_VALID_BIT'
+-- is not set in @flags@, an implementation /must/ not set any other bits
+-- in @flags@, and the values of all other 'PipelineCreationFeedback' data
+-- members are undefined.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_feedback>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'PipelineCreationFeedbackCreateInfo',
+-- 'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PipelineCreationFeedbackFlagBits',
+-- 'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PipelineCreationFeedbackFlags'
+data PipelineCreationFeedback = PipelineCreationFeedback
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PipelineCreationFeedbackFlagBits'
+    -- providing feedback about the creation of a pipeline or of a pipeline
+    -- stage.
+    flags :: PipelineCreationFeedbackFlags
+  , -- | @duration@ is the duration spent creating a pipeline or pipeline stage
+    -- in nanoseconds.
+    duration :: Word64
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineCreationFeedback)
+#endif
+deriving instance Show PipelineCreationFeedback
+
+instance ToCStruct PipelineCreationFeedback where
+  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineCreationFeedback{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlags)) (flags)
+    poke ((p `plusPtr` 8 :: Ptr Word64)) (duration)
+    f
+  cStructSize = 16
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlags)) (zero)
+    poke ((p `plusPtr` 8 :: Ptr Word64)) (zero)
+    f
+
+instance FromCStruct PipelineCreationFeedback where
+  peekCStruct p = do
+    flags <- peek @PipelineCreationFeedbackFlags ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlags))
+    duration <- peek @Word64 ((p `plusPtr` 8 :: Ptr Word64))
+    pure $ PipelineCreationFeedback
+             flags duration
+
+instance Storable PipelineCreationFeedback where
+  sizeOf ~_ = 16
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineCreationFeedback where
+  zero = PipelineCreationFeedback
+           zero
+           zero
+
+
+-- | VkPipelineCreationFeedbackCreateInfo - Request for feedback about the
+-- creation of a pipeline
+--
+-- = Description
+--
+-- An implementation /should/ write pipeline creation feedback to
+-- @pPipelineCreationFeedback@ and /may/ write pipeline stage creation
+-- feedback to @pPipelineStageCreationFeedbacks@. An implementation /must/
+-- set or clear the
+-- 'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_VALID_BIT'
+-- in 'PipelineCreationFeedback'::@flags@ for @pPipelineCreationFeedback@
+-- and every element of @pPipelineStageCreationFeedbacks@.
+--
+-- Note
+--
+-- One common scenario for an implementation to skip per-stage feedback is
+-- when
+-- 'Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits.PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT'
+-- is set in @pPipelineCreationFeedback@.
+--
+-- When chained to
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', or
+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', the @i@ element of
+-- @pPipelineStageCreationFeedbacks@ corresponds to the @i@ element of
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@pStages@,
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pStages@,
+-- or 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@. When
+-- chained to 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', the first
+-- element of @pPipelineStageCreationFeedbacks@ corresponds to
+-- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'::@stage@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02668#
+--     When chained to 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+--     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@
+--     /must/ equal
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@stageCount@
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02669#
+--     When chained to 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+--     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@
+--     /must/ equal 1
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02670#
+--     When chained to
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+--     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@
+--     /must/ equal
+--     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@stageCount@
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-02969#
+--     When chained to
+--     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
+--     'PipelineCreationFeedback'::@pipelineStageCreationFeedbackCount@
+--     /must/ equal
+--     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@stageCount@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pPipelineCreationFeedback-parameter#
+--     @pPipelineCreationFeedback@ /must/ be a valid pointer to a
+--     'PipelineCreationFeedback' structure
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pPipelineStageCreationFeedbacks-parameter#
+--     @pPipelineStageCreationFeedbacks@ /must/ be a valid pointer to an
+--     array of @pipelineStageCreationFeedbackCount@
+--     'PipelineCreationFeedback' structures
+--
+-- -   #VUID-VkPipelineCreationFeedbackCreateInfo-pipelineStageCreationFeedbackCount-arraylength#
+--     @pipelineStageCreationFeedbackCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_feedback>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+-- 'PipelineCreationFeedback',
+-- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
+-- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineCreationFeedbackCreateInfo = PipelineCreationFeedbackCreateInfo
+  { -- | @pPipelineCreationFeedback@ is a pointer to a 'PipelineCreationFeedback'
+    -- structure.
+    pipelineCreationFeedback :: Ptr PipelineCreationFeedback
+  , -- | @pipelineStageCreationFeedbackCount@ is the number of elements in
+    -- @pPipelineStageCreationFeedbacks@.
+    pipelineStageCreationFeedbackCount :: Word32
+  , -- | @pPipelineStageCreationFeedbacks@ is a pointer to an array of
+    -- @pipelineStageCreationFeedbackCount@ 'PipelineCreationFeedback'
+    -- structures.
+    pipelineStageCreationFeedbacks :: Ptr PipelineCreationFeedback
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineCreationFeedbackCreateInfo)
+#endif
+deriving instance Show PipelineCreationFeedbackCreateInfo
+
+instance ToCStruct PipelineCreationFeedbackCreateInfo where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineCreationFeedbackCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedback))) (pipelineCreationFeedback)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (pipelineStageCreationFeedbackCount)
+    poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedback))) (pipelineStageCreationFeedbacks)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedback))) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedback))) (zero)
+    f
+
+instance FromCStruct PipelineCreationFeedbackCreateInfo where
+  peekCStruct p = do
+    pPipelineCreationFeedback <- peek @(Ptr PipelineCreationFeedback) ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedback)))
+    pipelineStageCreationFeedbackCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pPipelineStageCreationFeedbacks <- peek @(Ptr PipelineCreationFeedback) ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedback)))
+    pure $ PipelineCreationFeedbackCreateInfo
+             pPipelineCreationFeedback pipelineStageCreationFeedbackCount pPipelineStageCreationFeedbacks
+
+instance Storable PipelineCreationFeedbackCreateInfo where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineCreationFeedbackCreateInfo where
+  zero = PipelineCreationFeedbackCreateInfo
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_pipeline_creation_feedback.hs-boot
@@ -0,0 +1,25 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_pipeline_creation_feedback"
+module Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback  ( PipelineCreationFeedback
+                                                                      , PipelineCreationFeedbackCreateInfo
+                                                                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PipelineCreationFeedback
+
+instance ToCStruct PipelineCreationFeedback
+instance Show PipelineCreationFeedback
+
+instance FromCStruct PipelineCreationFeedback
+
+
+data PipelineCreationFeedbackCreateInfo
+
+instance ToCStruct PipelineCreationFeedbackCreateInfo
+instance Show PipelineCreationFeedbackCreateInfo
+
+instance FromCStruct PipelineCreationFeedbackCreateInfo
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs
@@ -0,0 +1,563 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_private_data"
+module Vulkan.Core13.Promoted_From_VK_EXT_private_data  ( createPrivateDataSlot
+                                                        , withPrivateDataSlot
+                                                        , destroyPrivateDataSlot
+                                                        , setPrivateData
+                                                        , getPrivateData
+                                                        , DevicePrivateDataCreateInfo(..)
+                                                        , PrivateDataSlotCreateInfo(..)
+                                                        , PhysicalDevicePrivateDataFeatures(..)
+                                                        , PrivateDataSlot(..)
+                                                        , StructureType(..)
+                                                        , ObjectType(..)
+                                                        , PrivateDataSlotCreateFlagBits(..)
+                                                        , PrivateDataSlotCreateFlags
+                                                        ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkCreatePrivateDataSlot))
+import Vulkan.Dynamic (DeviceCmds(pVkDestroyPrivateDataSlot))
+import Vulkan.Dynamic (DeviceCmds(pVkGetPrivateData))
+import Vulkan.Dynamic (DeviceCmds(pVkSetPrivateData))
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.Core10.Enums.ObjectType (ObjectType)
+import Vulkan.Core10.Enums.ObjectType (ObjectType(..))
+import Vulkan.Core13.Handles (PrivateDataSlot)
+import Vulkan.Core13.Handles (PrivateDataSlot(..))
+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlags)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.ObjectType (ObjectType(..))
+import Vulkan.Core13.Handles (PrivateDataSlot(..))
+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlagBits(..))
+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCreatePrivateDataSlot
+  :: FunPtr (Ptr Device_T -> Ptr PrivateDataSlotCreateInfo -> Ptr AllocationCallbacks -> Ptr PrivateDataSlot -> IO Result) -> Ptr Device_T -> Ptr PrivateDataSlotCreateInfo -> Ptr AllocationCallbacks -> Ptr PrivateDataSlot -> IO Result
+
+-- | vkCreatePrivateDataSlot - Create a slot for private data storage
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCreatePrivateDataSlot-privateData-04564# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-privateData privateData>
+--     feature /must/ be enabled
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCreatePrivateDataSlot-device-parameter# @device@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkCreatePrivateDataSlot-pCreateInfo-parameter# @pCreateInfo@
+--     /must/ be a valid pointer to a valid 'PrivateDataSlotCreateInfo'
+--     structure
+--
+-- -   #VUID-vkCreatePrivateDataSlot-pAllocator-parameter# If @pAllocator@
+--     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkCreatePrivateDataSlot-pPrivateDataSlot-parameter#
+--     @pPrivateDataSlot@ /must/ be a valid pointer to a
+--     'Vulkan.Core13.Handles.PrivateDataSlot' handle
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core13.Handles.PrivateDataSlot',
+-- 'PrivateDataSlotCreateInfo'
+createPrivateDataSlot :: forall io
+                       . (MonadIO io)
+                      => -- | @device@ is the logical device associated with the creation of the
+                         -- object(s) holding the private data slot.
+                         Device
+                      -> -- | @pCreateInfo@ is a pointer to a 'PrivateDataSlotCreateInfo'
+                         PrivateDataSlotCreateInfo
+                      -> -- | @pAllocator@ controls host memory allocation as described in the
+                         -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                         -- chapter.
+                         ("allocator" ::: Maybe AllocationCallbacks)
+                      -> io (PrivateDataSlot)
+createPrivateDataSlot device createInfo allocator = liftIO . evalContT $ do
+  let vkCreatePrivateDataSlotPtr = pVkCreatePrivateDataSlot (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCreatePrivateDataSlotPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreatePrivateDataSlot is null" Nothing Nothing
+  let vkCreatePrivateDataSlot' = mkVkCreatePrivateDataSlot vkCreatePrivateDataSlotPtr
+  pCreateInfo <- ContT $ withCStruct (createInfo)
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  pPPrivateDataSlot <- ContT $ bracket (callocBytes @PrivateDataSlot 8) free
+  r <- lift $ traceAroundEvent "vkCreatePrivateDataSlot" (vkCreatePrivateDataSlot' (deviceHandle (device)) pCreateInfo pAllocator (pPPrivateDataSlot))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pPrivateDataSlot <- lift $ peek @PrivateDataSlot pPPrivateDataSlot
+  pure $ (pPrivateDataSlot)
+
+-- | A convenience wrapper to make a compatible pair of calls to
+-- 'createPrivateDataSlot' and 'destroyPrivateDataSlot'
+--
+-- To ensure that 'destroyPrivateDataSlot' is always called: pass
+-- 'Control.Exception.bracket' (or the allocate function from your
+-- favourite resource management library) as the last argument.
+-- To just extract the pair pass '(,)' as the last argument.
+--
+withPrivateDataSlot :: forall io r . MonadIO io => Device -> PrivateDataSlotCreateInfo -> Maybe AllocationCallbacks -> (io PrivateDataSlot -> (PrivateDataSlot -> io ()) -> r) -> r
+withPrivateDataSlot device pCreateInfo pAllocator b =
+  b (createPrivateDataSlot device pCreateInfo pAllocator)
+    (\(o0) -> destroyPrivateDataSlot device o0 pAllocator)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkDestroyPrivateDataSlot
+  :: FunPtr (Ptr Device_T -> PrivateDataSlot -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> PrivateDataSlot -> Ptr AllocationCallbacks -> IO ()
+
+-- | vkDestroyPrivateDataSlot - Destroy a private data slot
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkDestroyPrivateDataSlot-privateDataSlot-04062# If
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @privateDataSlot@ was created, a compatible set of
+--     callbacks /must/ be provided here
+--
+-- -   #VUID-vkDestroyPrivateDataSlot-privateDataSlot-04063# If no
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
+--     provided when @privateDataSlot@ was created, @pAllocator@ /must/ be
+--     @NULL@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkDestroyPrivateDataSlot-device-parameter# @device@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkDestroyPrivateDataSlot-privateDataSlot-parameter# If
+--     @privateDataSlot@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @privateDataSlot@ /must/ be a valid
+--     'Vulkan.Core13.Handles.PrivateDataSlot' handle
+--
+-- -   #VUID-vkDestroyPrivateDataSlot-pAllocator-parameter# If @pAllocator@
+--     is not @NULL@, @pAllocator@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
+--
+-- -   #VUID-vkDestroyPrivateDataSlot-privateDataSlot-parent# If
+--     @privateDataSlot@ is a valid handle, it /must/ have been created,
+--     allocated, or retrieved from @device@
+--
+-- == Host Synchronization
+--
+-- -   Host access to @privateDataSlot@ /must/ be externally synchronized
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
+-- 'Vulkan.Core10.Handles.Device', 'Vulkan.Core13.Handles.PrivateDataSlot'
+destroyPrivateDataSlot :: forall io
+                        . (MonadIO io)
+                       => -- | @device@ is the logical device associated with the creation of the
+                          -- object(s) holding the private data slot.
+                          Device
+                       -> -- | @privateDataSlot@ is the private data slot to destroy.
+                          PrivateDataSlot
+                       -> -- | @pAllocator@ controls host memory allocation as described in the
+                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                          -- chapter.
+                          ("allocator" ::: Maybe AllocationCallbacks)
+                       -> io ()
+destroyPrivateDataSlot device privateDataSlot allocator = liftIO . evalContT $ do
+  let vkDestroyPrivateDataSlotPtr = pVkDestroyPrivateDataSlot (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkDestroyPrivateDataSlotPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyPrivateDataSlot is null" Nothing Nothing
+  let vkDestroyPrivateDataSlot' = mkVkDestroyPrivateDataSlot vkDestroyPrivateDataSlotPtr
+  pAllocator <- case (allocator) of
+    Nothing -> pure nullPtr
+    Just j -> ContT $ withCStruct (j)
+  lift $ traceAroundEvent "vkDestroyPrivateDataSlot" (vkDestroyPrivateDataSlot' (deviceHandle (device)) (privateDataSlot) pAllocator)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkSetPrivateData
+  :: FunPtr (Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlot -> Word64 -> IO Result) -> Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlot -> Word64 -> IO Result
+
+-- | vkSetPrivateData - Associate data with a Vulkan object
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.Enums.ObjectType.ObjectType',
+-- 'Vulkan.Core13.Handles.PrivateDataSlot'
+setPrivateData :: forall io
+                . (MonadIO io)
+               => -- | @device@ is the device that created the object.
+                  --
+                  -- #VUID-vkSetPrivateData-device-parameter# @device@ /must/ be a valid
+                  -- 'Vulkan.Core10.Handles.Device' handle
+                  Device
+               -> -- | @objectType@ is a 'Vulkan.Core10.Enums.ObjectType.ObjectType' specifying
+                  -- the type of object to associate data with.
+                  --
+                  -- #VUID-vkSetPrivateData-objectType-parameter# @objectType@ /must/ be a
+                  -- valid 'Vulkan.Core10.Enums.ObjectType.ObjectType' value
+                  ObjectType
+               -> -- | @objectHandle@ is a handle to the object to associate data with.
+                  --
+                  -- #VUID-vkSetPrivateData-objectHandle-04016# @objectHandle@ /must/ be
+                  -- @device@ or a child of @device@
+                  --
+                  -- #VUID-vkSetPrivateData-objectHandle-04017# @objectHandle@ /must/ be a
+                  -- valid handle to an object of type @objectType@
+                  ("objectHandle" ::: Word64)
+               -> -- | @privateDataSlot@ is a handle to a
+                  -- 'Vulkan.Core13.Handles.PrivateDataSlot' specifying location of private
+                  -- data storage.
+                  --
+                  -- #VUID-vkSetPrivateData-privateDataSlot-parameter# @privateDataSlot@
+                  -- /must/ be a valid 'Vulkan.Core13.Handles.PrivateDataSlot' handle
+                  --
+                  -- #VUID-vkSetPrivateData-privateDataSlot-parent# @privateDataSlot@ /must/
+                  -- have been created, allocated, or retrieved from @device@
+                  PrivateDataSlot
+               -> -- | @data@ is user defined data to associate the object with. This data will
+                  -- be stored at @privateDataSlot@.
+                  ("data" ::: Word64)
+               -> io ()
+setPrivateData device objectType objectHandle privateDataSlot data' = liftIO $ do
+  let vkSetPrivateDataPtr = pVkSetPrivateData (case device of Device{deviceCmds} -> deviceCmds)
+  unless (vkSetPrivateDataPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkSetPrivateData is null" Nothing Nothing
+  let vkSetPrivateData' = mkVkSetPrivateData vkSetPrivateDataPtr
+  r <- traceAroundEvent "vkSetPrivateData" (vkSetPrivateData' (deviceHandle (device)) (objectType) (objectHandle) (privateDataSlot) (data'))
+  when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPrivateData
+  :: FunPtr (Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlot -> Ptr Word64 -> IO ()) -> Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlot -> Ptr Word64 -> IO ()
+
+-- | vkGetPrivateData - Retrieve data associated with a Vulkan object
+--
+-- = Description
+--
+-- Note
+--
+-- Due to platform details on Android, implementations might not be able to
+-- reliably return @0@ from calls to 'getPrivateData' for
+-- 'Vulkan.Extensions.Handles.SwapchainKHR' objects on which
+-- 'setPrivateData' has not previously been called. This erratum is
+-- exclusive to the Android platform and objects of type
+-- 'Vulkan.Extensions.Handles.SwapchainKHR'.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Device',
+-- 'Vulkan.Core10.Enums.ObjectType.ObjectType',
+-- 'Vulkan.Core13.Handles.PrivateDataSlot'
+getPrivateData :: forall io
+                . (MonadIO io)
+               => -- | @device@ is the device that created the object
+                  --
+                  -- #VUID-vkGetPrivateData-device-parameter# @device@ /must/ be a valid
+                  -- 'Vulkan.Core10.Handles.Device' handle
+                  Device
+               -> -- | @objectType@ is a 'Vulkan.Core10.Enums.ObjectType.ObjectType' specifying
+                  -- the type of object data is associated with.
+                  --
+                  -- #VUID-vkGetPrivateData-objectType-04018# @objectType@ /must/ be
+                  -- 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEVICE', or an object type
+                  -- whose parent is 'Vulkan.Core10.Handles.Device'
+                  --
+                  -- #VUID-vkGetPrivateData-objectType-parameter# @objectType@ /must/ be a
+                  -- valid 'Vulkan.Core10.Enums.ObjectType.ObjectType' value
+                  ObjectType
+               -> -- | @objectHandle@ is a handle to the object data is associated with.
+                  ("objectHandle" ::: Word64)
+               -> -- | @privateDataSlot@ is a handle to a
+                  -- 'Vulkan.Core13.Handles.PrivateDataSlot' specifying location of private
+                  -- data pointer storage.
+                  --
+                  -- #VUID-vkGetPrivateData-privateDataSlot-parameter# @privateDataSlot@
+                  -- /must/ be a valid 'Vulkan.Core13.Handles.PrivateDataSlot' handle
+                  --
+                  -- #VUID-vkGetPrivateData-privateDataSlot-parent# @privateDataSlot@ /must/
+                  -- have been created, allocated, or retrieved from @device@
+                  PrivateDataSlot
+               -> io (("data" ::: Word64))
+getPrivateData device objectType objectHandle privateDataSlot = liftIO . evalContT $ do
+  let vkGetPrivateDataPtr = pVkGetPrivateData (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetPrivateDataPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPrivateData is null" Nothing Nothing
+  let vkGetPrivateData' = mkVkGetPrivateData vkGetPrivateDataPtr
+  pPData <- ContT $ bracket (callocBytes @Word64 8) free
+  lift $ traceAroundEvent "vkGetPrivateData" (vkGetPrivateData' (deviceHandle (device)) (objectType) (objectHandle) (privateDataSlot) (pPData))
+  pData <- lift $ peek @Word64 pPData
+  pure $ (pData)
+
+
+-- | VkDevicePrivateDataCreateInfo - Reserve private data slots
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DevicePrivateDataCreateInfo = DevicePrivateDataCreateInfo
+  { -- | @privateDataSlotRequestCount@ is the amount of slots to reserve.
+    privateDataSlotRequestCount :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DevicePrivateDataCreateInfo)
+#endif
+deriving instance Show DevicePrivateDataCreateInfo
+
+instance ToCStruct DevicePrivateDataCreateInfo where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DevicePrivateDataCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (privateDataSlotRequestCount)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct DevicePrivateDataCreateInfo where
+  peekCStruct p = do
+    privateDataSlotRequestCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ DevicePrivateDataCreateInfo
+             privateDataSlotRequestCount
+
+instance Storable DevicePrivateDataCreateInfo where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DevicePrivateDataCreateInfo where
+  zero = DevicePrivateDataCreateInfo
+           zero
+
+
+-- | VkPrivateDataSlotCreateInfo - Structure specifying the parameters of
+-- private data slot construction
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits.PrivateDataSlotCreateFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'createPrivateDataSlot',
+-- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT'
+data PrivateDataSlotCreateInfo = PrivateDataSlotCreateInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits.PrivateDataSlotCreateFlags'
+    -- specifying additional parameters of the new private data slot
+    --
+    -- #VUID-VkPrivateDataSlotCreateInfo-flags-zerobitmask# @flags@ /must/ be
+    -- @0@
+    flags :: PrivateDataSlotCreateFlags }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PrivateDataSlotCreateInfo)
+#endif
+deriving instance Show PrivateDataSlotCreateInfo
+
+instance ToCStruct PrivateDataSlotCreateInfo where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PrivateDataSlotCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PrivateDataSlotCreateFlags)) (flags)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PrivateDataSlotCreateFlags)) (zero)
+    f
+
+instance FromCStruct PrivateDataSlotCreateInfo where
+  peekCStruct p = do
+    flags <- peek @PrivateDataSlotCreateFlags ((p `plusPtr` 16 :: Ptr PrivateDataSlotCreateFlags))
+    pure $ PrivateDataSlotCreateInfo
+             flags
+
+instance Storable PrivateDataSlotCreateInfo where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PrivateDataSlotCreateInfo where
+  zero = PrivateDataSlotCreateInfo
+           zero
+
+
+-- | VkPhysicalDevicePrivateDataFeatures - Structure specifying physical
+-- device support
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDevicePrivateDataFeatures' 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. 'PhysicalDevicePrivateDataFeatures' /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_private_data VK_EXT_private_data>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDevicePrivateDataFeatures = PhysicalDevicePrivateDataFeatures
+  { -- | #extension-features-privateData# @privateData@ indicates whether the
+    -- implementation supports private data. See
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#private-data Private Data>.
+    privateData :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDevicePrivateDataFeatures)
+#endif
+deriving instance Show PhysicalDevicePrivateDataFeatures
+
+instance ToCStruct PhysicalDevicePrivateDataFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDevicePrivateDataFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (privateData))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDevicePrivateDataFeatures where
+  peekCStruct p = do
+    privateData <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDevicePrivateDataFeatures
+             (bool32ToBool privateData)
+
+instance Storable PhysicalDevicePrivateDataFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDevicePrivateDataFeatures where
+  zero = PhysicalDevicePrivateDataFeatures
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_private_data.hs-boot
@@ -0,0 +1,34 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_private_data"
+module Vulkan.Core13.Promoted_From_VK_EXT_private_data  ( DevicePrivateDataCreateInfo
+                                                        , PhysicalDevicePrivateDataFeatures
+                                                        , PrivateDataSlotCreateInfo
+                                                        ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DevicePrivateDataCreateInfo
+
+instance ToCStruct DevicePrivateDataCreateInfo
+instance Show DevicePrivateDataCreateInfo
+
+instance FromCStruct DevicePrivateDataCreateInfo
+
+
+data PhysicalDevicePrivateDataFeatures
+
+instance ToCStruct PhysicalDevicePrivateDataFeatures
+instance Show PhysicalDevicePrivateDataFeatures
+
+instance FromCStruct PhysicalDevicePrivateDataFeatures
+
+
+data PrivateDataSlotCreateInfo
+
+instance ToCStruct PrivateDataSlotCreateInfo
+instance Show PrivateDataSlotCreateInfo
+
+instance FromCStruct PrivateDataSlotCreateInfo
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_shader_demote_to_helper_invocation.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_shader_demote_to_helper_invocation.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_shader_demote_to_helper_invocation.hs
@@ -0,0 +1,99 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_shader_demote_to_helper_invocation"
+module Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation  ( PhysicalDeviceShaderDemoteToHelperInvocationFeatures(..)
+                                                                              , StructureType(..)
+                                                                              ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures - Structure
+-- describing the shader demote to helper invocations features that can be
+-- supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderDemoteToHelperInvocationFeatures' 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. 'PhysicalDeviceShaderDemoteToHelperInvocationFeatures' /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_shader_demote_to_helper_invocation VK_EXT_shader_demote_to_helper_invocation>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderDemoteToHelperInvocationFeatures = PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+  { -- | #extension-features-shaderDemoteToHelperInvocation#
+    -- @shaderDemoteToHelperInvocation@ indicates whether the implementation
+    -- supports the SPIR-V @DemoteToHelperInvocationEXT@ capability.
+    shaderDemoteToHelperInvocation :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderDemoteToHelperInvocationFeatures)
+#endif
+deriving instance Show PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+
+instance ToCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderDemoteToHelperInvocationFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderDemoteToHelperInvocation))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeatures where
+  peekCStruct p = do
+    shaderDemoteToHelperInvocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+             (bool32ToBool shaderDemoteToHelperInvocation)
+
+instance Storable PhysicalDeviceShaderDemoteToHelperInvocationFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderDemoteToHelperInvocationFeatures where
+  zero = PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_shader_demote_to_helper_invocation.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_shader_demote_to_helper_invocation.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_shader_demote_to_helper_invocation.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_shader_demote_to_helper_invocation"
+module Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation  (PhysicalDeviceShaderDemoteToHelperInvocationFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+
+instance ToCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+instance Show PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+
+instance FromCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeatures
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs
@@ -0,0 +1,322 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_subgroup_size_control"
+module Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control  ( PhysicalDeviceSubgroupSizeControlFeatures(..)
+                                                                 , PhysicalDeviceSubgroupSizeControlProperties(..)
+                                                                 , PipelineShaderStageRequiredSubgroupSizeCreateInfo(..)
+                                                                 , StructureType(..)
+                                                                 , PipelineShaderStageCreateFlagBits(..)
+                                                                 , PipelineShaderStageCreateFlags
+                                                                 ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO))
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(..))
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceSubgroupSizeControlFeatures - Structure describing the
+-- subgroup size control features that can be supported by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceSubgroupSizeControlFeatures' 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. 'PhysicalDeviceSubgroupSizeControlFeatures' /can/ also be
+-- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
+-- selectively enable these features.
+--
+-- Note
+--
+-- The
+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT'
+-- structure was added in version 2 of the @VK_EXT_subgroup_size_control@
+-- extension. Version 1 implementations of this extension will not fill out
+-- the features structure but applications may assume that both
+-- @subgroupSizeControl@ and @computeFullSubgroups@ are supported if the
+-- extension is supported. (See also the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-requirements Feature Requirements>
+-- section.) Applications are advised to add a
+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT'
+-- structure to the @pNext@ chain of
+-- 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features
+-- regardless of the version of the extension supported by the
+-- implementation. If the implementation only supports version 1, it will
+-- safely ignore the
+-- 'Vulkan.Extensions.VK_EXT_subgroup_size_control.PhysicalDeviceSubgroupSizeControlFeaturesEXT'
+-- structure.
+--
+-- Vulkan 1.3 implementations always support the features structure.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control VK_EXT_subgroup_size_control>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceSubgroupSizeControlFeatures = PhysicalDeviceSubgroupSizeControlFeatures
+  { -- | #extension-features-subgroupSizeControl# @subgroupSizeControl@ indicates
+    -- whether the implementation supports controlling shader subgroup sizes
+    -- via the
+    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT'
+    -- flag and the 'PipelineShaderStageRequiredSubgroupSizeCreateInfo'
+    -- structure.
+    subgroupSizeControl :: Bool
+  , -- | #extension-features-computeFullSubgroups# @computeFullSubgroups@
+    -- indicates whether the implementation supports requiring full subgroups
+    -- in compute shaders via the
+    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT'
+    -- flag.
+    computeFullSubgroups :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceSubgroupSizeControlFeatures)
+#endif
+deriving instance Show PhysicalDeviceSubgroupSizeControlFeatures
+
+instance ToCStruct PhysicalDeviceSubgroupSizeControlFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceSubgroupSizeControlFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (subgroupSizeControl))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (computeFullSubgroups))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceSubgroupSizeControlFeatures where
+  peekCStruct p = do
+    subgroupSizeControl <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    computeFullSubgroups <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ PhysicalDeviceSubgroupSizeControlFeatures
+             (bool32ToBool subgroupSizeControl) (bool32ToBool computeFullSubgroups)
+
+instance Storable PhysicalDeviceSubgroupSizeControlFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceSubgroupSizeControlFeatures where
+  zero = PhysicalDeviceSubgroupSizeControlFeatures
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceSubgroupSizeControlProperties - Structure describing the
+-- control subgroup size properties of an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceSubgroupSizeControlProperties' 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.
+--
+-- If
+-- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties'::@supportedOperations@
+-- includes
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroup-quad >,
+-- @minSubgroupSize@ /must/ be greater than or equal to 4.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control VK_EXT_subgroup_size_control>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceSubgroupSizeControlProperties = PhysicalDeviceSubgroupSizeControlProperties
+  { -- | #extension-limits-minSubgroupSize# @minSubgroupSize@ is the minimum
+    -- subgroup size supported by this device. @minSubgroupSize@ is at least
+    -- one if any of the physical device’s queues support
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @minSubgroupSize@
+    -- is a power-of-two. @minSubgroupSize@ is less than or equal to
+    -- @maxSubgroupSize@. @minSubgroupSize@ is less than or equal to
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
+    minSubgroupSize :: Word32
+  , -- | #extension-limits-maxSubgroupSize# @maxSubgroupSize@ is the maximum
+    -- subgroup size supported by this device. @maxSubgroupSize@ is at least
+    -- one if any of the physical device’s queues support
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @maxSubgroupSize@
+    -- is a power-of-two. @maxSubgroupSize@ is greater than or equal to
+    -- @minSubgroupSize@. @maxSubgroupSize@ is greater than or equal to
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
+    maxSubgroupSize :: Word32
+  , -- | #extension-limits-maxComputeWorkgroupSubgroups#
+    -- @maxComputeWorkgroupSubgroups@ is the maximum number of subgroups
+    -- supported by the implementation within a workgroup.
+    maxComputeWorkgroupSubgroups :: Word32
+  , -- | #extension-limits-requiredSubgroupSizeStages#
+    -- @requiredSubgroupSizeStages@ is a bitfield of what shader stages support
+    -- having a required subgroup size specified.
+    requiredSubgroupSizeStages :: ShaderStageFlags
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceSubgroupSizeControlProperties)
+#endif
+deriving instance Show PhysicalDeviceSubgroupSizeControlProperties
+
+instance ToCStruct PhysicalDeviceSubgroupSizeControlProperties where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceSubgroupSizeControlProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (minSubgroupSize)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxSubgroupSize)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxComputeWorkgroupSubgroups)
+    poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (requiredSubgroupSizeStages)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceSubgroupSizeControlProperties where
+  peekCStruct p = do
+    minSubgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    maxSubgroupSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    maxComputeWorkgroupSubgroups <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    requiredSubgroupSizeStages <- peek @ShaderStageFlags ((p `plusPtr` 28 :: Ptr ShaderStageFlags))
+    pure $ PhysicalDeviceSubgroupSizeControlProperties
+             minSubgroupSize maxSubgroupSize maxComputeWorkgroupSubgroups requiredSubgroupSizeStages
+
+instance Storable PhysicalDeviceSubgroupSizeControlProperties where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceSubgroupSizeControlProperties where
+  zero = PhysicalDeviceSubgroupSizeControlProperties
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPipelineShaderStageRequiredSubgroupSizeCreateInfo - Structure
+-- specifying the required subgroup size of a newly created pipeline shader
+-- stage
+--
+-- = Description
+--
+-- If a 'PipelineShaderStageRequiredSubgroupSizeCreateInfo' structure is
+-- included in the @pNext@ chain of
+-- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo', it specifies
+-- that the pipeline shader stage being compiled has a required subgroup
+-- size.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control VK_EXT_subgroup_size_control>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineShaderStageRequiredSubgroupSizeCreateInfo = PipelineShaderStageRequiredSubgroupSizeCreateInfo
+  { -- | #pipelines-required-subgroup-size# @requiredSubgroupSize@ is an unsigned
+    -- integer value specifying the required subgroup size for the newly
+    -- created pipeline shader stage.
+    --
+    -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02760#
+    -- @requiredSubgroupSize@ /must/ be a power-of-two integer
+    --
+    -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02761#
+    -- @requiredSubgroupSize@ /must/ be greater or equal to
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
+    --
+    -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02762#
+    -- @requiredSubgroupSize@ /must/ be less than or equal to
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
+    requiredSubgroupSize :: Word32 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
+#endif
+deriving instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfo
+
+instance ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineShaderStageRequiredSubgroupSizeCreateInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (requiredSubgroupSize)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo where
+  peekCStruct p = do
+    requiredSubgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pure $ PipelineShaderStageRequiredSubgroupSizeCreateInfo
+             requiredSubgroupSize
+
+instance Storable PipelineShaderStageRequiredSubgroupSizeCreateInfo where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PipelineShaderStageRequiredSubgroupSizeCreateInfo where
+  zero = PipelineShaderStageRequiredSubgroupSizeCreateInfo
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_subgroup_size_control.hs-boot
@@ -0,0 +1,34 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_subgroup_size_control"
+module Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control  ( PhysicalDeviceSubgroupSizeControlFeatures
+                                                                 , PhysicalDeviceSubgroupSizeControlProperties
+                                                                 , PipelineShaderStageRequiredSubgroupSizeCreateInfo
+                                                                 ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceSubgroupSizeControlFeatures
+
+instance ToCStruct PhysicalDeviceSubgroupSizeControlFeatures
+instance Show PhysicalDeviceSubgroupSizeControlFeatures
+
+instance FromCStruct PhysicalDeviceSubgroupSizeControlFeatures
+
+
+data PhysicalDeviceSubgroupSizeControlProperties
+
+instance ToCStruct PhysicalDeviceSubgroupSizeControlProperties
+instance Show PhysicalDeviceSubgroupSizeControlProperties
+
+instance FromCStruct PhysicalDeviceSubgroupSizeControlProperties
+
+
+data PipelineShaderStageRequiredSubgroupSizeCreateInfo
+
+instance ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo
+instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfo
+
+instance FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfo
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs
@@ -0,0 +1,139 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_texel_buffer_alignment"
+module Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment  ( PhysicalDeviceTexelBufferAlignmentProperties(..)
+                                                                  , StructureType(..)
+                                                                  ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceTexelBufferAlignmentProperties - Structure describing
+-- the texel buffer alignment requirements supported by an implementation
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTexelBufferAlignmentProperties' 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.
+--
+-- If the single texel alignment property is
+-- 'Vulkan.Core10.FundamentalTypes.FALSE', then the buffer view’s offset
+-- /must/ be aligned to the corresponding byte alignment value. If the
+-- single texel alignment property is
+-- 'Vulkan.Core10.FundamentalTypes.TRUE', then the buffer view’s offset
+-- /must/ be aligned to the lesser of the corresponding byte alignment
+-- value or the size of a single texel, based on
+-- 'Vulkan.Core10.BufferView.BufferViewCreateInfo'::@format@. If the size
+-- of a single texel is a multiple of three bytes, then the size of a
+-- single component of the format is used instead.
+--
+-- These limits /must/ not advertise a larger alignment than the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-required required>
+-- maximum minimum value of
+-- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@,
+-- for any format that supports use as a texel buffer.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment VK_EXT_texel_buffer_alignment>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTexelBufferAlignmentProperties = PhysicalDeviceTexelBufferAlignmentProperties
+  { -- | #extension-limits-storageTexelBufferOffsetAlignmentBytes#
+    -- @storageTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
+    -- sufficient for a storage texel buffer of any format. The value /must/ be
+    -- a power of two.
+    storageTexelBufferOffsetAlignmentBytes :: DeviceSize
+  , -- | #extension-limits-storageTexelBufferOffsetSingleTexelAlignment#
+    -- @storageTexelBufferOffsetSingleTexelAlignment@ indicates whether single
+    -- texel alignment is sufficient for a storage texel buffer of any format.
+    -- The value /must/ be a power of two.
+    storageTexelBufferOffsetSingleTexelAlignment :: Bool
+  , -- | #extension-limits-uniformTexelBufferOffsetAlignmentBytes#
+    -- @uniformTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
+    -- sufficient for a uniform texel buffer of any format. The value /must/ be
+    -- a power of two.
+    uniformTexelBufferOffsetAlignmentBytes :: DeviceSize
+  , -- | #extension-limits-uniformTexelBufferOffsetSingleTexelAlignment#
+    -- @uniformTexelBufferOffsetSingleTexelAlignment@ indicates whether single
+    -- texel alignment is sufficient for a uniform texel buffer of any format.
+    -- The value /must/ be a power of two.
+    uniformTexelBufferOffsetSingleTexelAlignment :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTexelBufferAlignmentProperties)
+#endif
+deriving instance Show PhysicalDeviceTexelBufferAlignmentProperties
+
+instance ToCStruct PhysicalDeviceTexelBufferAlignmentProperties where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTexelBufferAlignmentProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (storageTexelBufferOffsetAlignmentBytes)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (storageTexelBufferOffsetSingleTexelAlignment))
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (uniformTexelBufferOffsetAlignmentBytes)
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (uniformTexelBufferOffsetSingleTexelAlignment))
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceTexelBufferAlignmentProperties where
+  peekCStruct p = do
+    storageTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    storageTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    uniformTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    uniformTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    pure $ PhysicalDeviceTexelBufferAlignmentProperties
+             storageTexelBufferOffsetAlignmentBytes (bool32ToBool storageTexelBufferOffsetSingleTexelAlignment) uniformTexelBufferOffsetAlignmentBytes (bool32ToBool uniformTexelBufferOffsetSingleTexelAlignment)
+
+instance Storable PhysicalDeviceTexelBufferAlignmentProperties where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTexelBufferAlignmentProperties where
+  zero = PhysicalDeviceTexelBufferAlignmentProperties
+           zero
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_texel_buffer_alignment.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_texel_buffer_alignment"
+module Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment  (PhysicalDeviceTexelBufferAlignmentProperties) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceTexelBufferAlignmentProperties
+
+instance ToCStruct PhysicalDeviceTexelBufferAlignmentProperties
+instance Show PhysicalDeviceTexelBufferAlignmentProperties
+
+instance FromCStruct PhysicalDeviceTexelBufferAlignmentProperties
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_texture_compression_astc_hdr.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_texture_compression_astc_hdr.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_texture_compression_astc_hdr.hs
@@ -0,0 +1,141 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_texture_compression_astc_hdr"
+module Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr  ( PhysicalDeviceTextureCompressionASTCHDRFeatures(..)
+                                                                        , Format(..)
+                                                                        , StructureType(..)
+                                                                        ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES))
+import Vulkan.Core10.Enums.Format (Format(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceTextureCompressionASTCHDRFeatures - Structure describing
+-- ASTC HDR features that can be supported by an implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceTextureCompressionASTCHDRFeatures' 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. 'PhysicalDeviceTextureCompressionASTCHDRFeatures' /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_texture_compression_astc_hdr VK_EXT_texture_compression_astc_hdr>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceTextureCompressionASTCHDRFeatures = PhysicalDeviceTextureCompressionASTCHDRFeatures
+  { -- | #extension-features-textureCompressionASTC_HDR#
+    -- @textureCompressionASTC_HDR@ indicates whether all of the ASTC HDR
+    -- compressed texture formats are supported. If this feature is enabled,
+    -- then the
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
+    -- and
+    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+    -- features /must/ be supported in @optimalTilingFeatures@ for the
+    -- following formats:
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK'
+    --
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK'
+    --
+    -- To query for additional properties, or if the feature is not enabled,
+    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'
+    -- and
+    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'
+    -- /can/ be used to check for supported properties of individual formats as
+    -- normal.
+    textureCompressionASTC_HDR :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceTextureCompressionASTCHDRFeatures)
+#endif
+deriving instance Show PhysicalDeviceTextureCompressionASTCHDRFeatures
+
+instance ToCStruct PhysicalDeviceTextureCompressionASTCHDRFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceTextureCompressionASTCHDRFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_HDR))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceTextureCompressionASTCHDRFeatures where
+  peekCStruct p = do
+    textureCompressionASTC_HDR <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceTextureCompressionASTCHDRFeatures
+             (bool32ToBool textureCompressionASTC_HDR)
+
+instance Storable PhysicalDeviceTextureCompressionASTCHDRFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceTextureCompressionASTCHDRFeatures where
+  zero = PhysicalDeviceTextureCompressionASTCHDRFeatures
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_texture_compression_astc_hdr.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_texture_compression_astc_hdr.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_texture_compression_astc_hdr.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_texture_compression_astc_hdr"
+module Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr  (PhysicalDeviceTextureCompressionASTCHDRFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceTextureCompressionASTCHDRFeatures
+
+instance ToCStruct PhysicalDeviceTextureCompressionASTCHDRFeatures
+instance Show PhysicalDeviceTextureCompressionASTCHDRFeatures
+
+instance FromCStruct PhysicalDeviceTextureCompressionASTCHDRFeatures
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs b/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs
@@ -0,0 +1,235 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_tooling_info"
+module Vulkan.Core13.Promoted_From_VK_EXT_tooling_info  ( getPhysicalDeviceToolProperties
+                                                        , PhysicalDeviceToolProperties(..)
+                                                        , StructureType(..)
+                                                        , ToolPurposeFlagBits(..)
+                                                        , ToolPurposeFlags
+                                                        ) where
+
+import Vulkan.CStruct.Utils (FixedArray)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.Base (when)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Data.ByteString (packCString)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+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.Typeable (Typeable)
+import Foreign.C.Types (CChar)
+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.ByteString (ByteString)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
+import Vulkan.NamedType ((:::))
+import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceToolProperties))
+import Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)
+import Vulkan.Core10.APIConstants (MAX_EXTENSION_NAME_SIZE)
+import Vulkan.Core10.Handles (PhysicalDevice)
+import Vulkan.Core10.Handles (PhysicalDevice(..))
+import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
+import Vulkan.Core10.Handles (PhysicalDevice_T)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+import Vulkan.Exception (VulkanException(..))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits(..))
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetPhysicalDeviceToolProperties
+  :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr PhysicalDeviceToolProperties -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr PhysicalDeviceToolProperties -> IO Result
+
+-- | vkGetPhysicalDeviceToolProperties - Reports properties of tools active
+-- on the specified physical device
+--
+-- = Description
+--
+-- If @pToolProperties@ is @NULL@, then the number of tools currently
+-- active on @physicalDevice@ is returned in @pToolCount@. Otherwise,
+-- @pToolCount@ /must/ point to a variable set by the user to the number of
+-- elements in the @pToolProperties@ array, and on return the variable is
+-- overwritten with the number of structures actually written to
+-- @pToolProperties@. If @pToolCount@ is less than the number of currently
+-- active tools, at most @pToolCount@ structures will be written.
+--
+-- The count and properties of active tools /may/ change in response to
+-- events outside the scope of the specification. An application /should/
+-- assume these properties might change at any given time.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetPhysicalDeviceToolProperties-physicalDevice-parameter#
+--     @physicalDevice@ /must/ be a valid
+--     'Vulkan.Core10.Handles.PhysicalDevice' handle
+--
+-- -   #VUID-vkGetPhysicalDeviceToolProperties-pToolCount-parameter#
+--     @pToolCount@ /must/ be a valid pointer to a @uint32_t@ value
+--
+-- -   #VUID-vkGetPhysicalDeviceToolProperties-pToolProperties-parameter#
+--     If the value referenced by @pToolCount@ is not @0@, and
+--     @pToolProperties@ is not @NULL@, @pToolProperties@ /must/ be a valid
+--     pointer to an array of @pToolCount@ 'PhysicalDeviceToolProperties'
+--     structures
+--
+-- == Return Codes
+--
+-- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
+--
+--     -   'Vulkan.Core10.Enums.Result.SUCCESS'
+--
+--     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
+--
+-- [<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'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.PhysicalDevice', 'PhysicalDeviceToolProperties'
+getPhysicalDeviceToolProperties :: forall io
+                                 . (MonadIO io)
+                                => -- | @physicalDevice@ is the handle to the physical device to query for
+                                   -- active tools.
+                                   PhysicalDevice
+                                -> io (Result, ("toolProperties" ::: Vector PhysicalDeviceToolProperties))
+getPhysicalDeviceToolProperties physicalDevice = liftIO . evalContT $ do
+  let vkGetPhysicalDeviceToolPropertiesPtr = pVkGetPhysicalDeviceToolProperties (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
+  lift $ unless (vkGetPhysicalDeviceToolPropertiesPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceToolProperties is null" Nothing Nothing
+  let vkGetPhysicalDeviceToolProperties' = mkVkGetPhysicalDeviceToolProperties vkGetPhysicalDeviceToolPropertiesPtr
+  let physicalDevice' = physicalDeviceHandle (physicalDevice)
+  pPToolCount <- ContT $ bracket (callocBytes @Word32 4) free
+  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceToolProperties" (vkGetPhysicalDeviceToolProperties' physicalDevice' (pPToolCount) (nullPtr))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+  pToolCount <- lift $ peek @Word32 pPToolCount
+  pPToolProperties <- ContT $ bracket (callocBytes @PhysicalDeviceToolProperties ((fromIntegral (pToolCount)) * 1048)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPToolProperties `advancePtrBytes` (i * 1048) :: Ptr PhysicalDeviceToolProperties) . ($ ())) [0..(fromIntegral (pToolCount)) - 1]
+  r' <- lift $ traceAroundEvent "vkGetPhysicalDeviceToolProperties" (vkGetPhysicalDeviceToolProperties' physicalDevice' (pPToolCount) ((pPToolProperties)))
+  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
+  pToolCount' <- lift $ peek @Word32 pPToolCount
+  pToolProperties' <- lift $ generateM (fromIntegral (pToolCount')) (\i -> peekCStruct @PhysicalDeviceToolProperties (((pPToolProperties) `advancePtrBytes` (1048 * (i)) :: Ptr PhysicalDeviceToolProperties)))
+  pure $ ((r'), pToolProperties')
+
+
+-- | VkPhysicalDeviceToolProperties - Structure providing information about
+-- an active tool
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core13.Enums.ToolPurposeFlagBits.ToolPurposeFlags',
+-- 'getPhysicalDeviceToolProperties',
+-- 'Vulkan.Extensions.VK_EXT_tooling_info.getPhysicalDeviceToolPropertiesEXT'
+data PhysicalDeviceToolProperties = PhysicalDeviceToolProperties
+  { -- | @name@ is a null-terminated UTF-8 string containing the name of the
+    -- tool.
+    name :: ByteString
+  , -- | @version@ is a null-terminated UTF-8 string containing the version of
+    -- the tool.
+    version :: ByteString
+  , -- | @purposes@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.ToolPurposeFlagBits.ToolPurposeFlagBits' which is
+    -- populated with purposes supported by the tool.
+    purposes :: ToolPurposeFlags
+  , -- | @description@ is a null-terminated UTF-8 string containing a description
+    -- of the tool.
+    description :: ByteString
+  , -- | @layer@ is a null-terminated UTF-8 string containing the name of the
+    -- layer implementing the tool, if the tool is implemented in a layer -
+    -- otherwise it /may/ be an empty string.
+    layer :: ByteString
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceToolProperties)
+#endif
+deriving instance Show PhysicalDeviceToolProperties
+
+instance ToCStruct PhysicalDeviceToolProperties where
+  withCStruct x f = allocaBytes 1048 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceToolProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (name)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (version)
+    poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlags)) (purposes)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (layer)
+    f
+  cStructSize = 1048
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)
+    poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlags)) (zero)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)
+    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)
+    f
+
+instance FromCStruct PhysicalDeviceToolProperties where
+  peekCStruct p = do
+    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))
+    version <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))
+    purposes <- peek @ToolPurposeFlags ((p `plusPtr` 528 :: Ptr ToolPurposeFlags))
+    description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
+    layer <- packCString (lowerArrayPtr ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))
+    pure $ PhysicalDeviceToolProperties
+             name version purposes description layer
+
+instance Storable PhysicalDeviceToolProperties where
+  sizeOf ~_ = 1048
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceToolProperties where
+  zero = PhysicalDeviceToolProperties
+           mempty
+           mempty
+           zero
+           mempty
+           mempty
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_EXT_tooling_info.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_EXT_tooling_info"
+module Vulkan.Core13.Promoted_From_VK_EXT_tooling_info  (PhysicalDeviceToolProperties) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceToolProperties
+
+instance ToCStruct PhysicalDeviceToolProperties
+instance Show PhysicalDeviceToolProperties
+
+instance FromCStruct PhysicalDeviceToolProperties
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs
@@ -0,0 +1,3098 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_copy_commands2"
+module Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2  ( cmdCopyBuffer2
+                                                          , cmdCopyImage2
+                                                          , cmdBlitImage2
+                                                          , cmdCopyBufferToImage2
+                                                          , cmdCopyImageToBuffer2
+                                                          , cmdResolveImage2
+                                                          , BufferCopy2(..)
+                                                          , ImageCopy2(..)
+                                                          , ImageBlit2(..)
+                                                          , BufferImageCopy2(..)
+                                                          , ImageResolve2(..)
+                                                          , CopyBufferInfo2(..)
+                                                          , CopyImageInfo2(..)
+                                                          , BlitImageInfo2(..)
+                                                          , CopyBufferToImageInfo2(..)
+                                                          , CopyImageToBufferInfo2(..)
+                                                          , ResolveImageInfo2(..)
+                                                          , StructureType(..)
+                                                          ) where
+
+import Vulkan.CStruct.Utils (FixedArray)
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.Core10.Handles (Buffer)
+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 {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_rotated_copy_commands (CopyCommandTransformInfoQCOM)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBlitImage2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBuffer2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBufferToImage2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImage2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImageToBuffer2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdResolveImage2))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.FundamentalTypes (Extent3D)
+import Vulkan.Core10.Enums.Filter (Filter)
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
+import Vulkan.Core10.FundamentalTypes (Offset3D)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BLIT_IMAGE_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_COPY_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_BUFFER_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_BLIT_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_COPY_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_RESOLVE_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyBuffer2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyBufferInfo2 -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyBufferInfo2 -> IO ()
+
+-- | vkCmdCopyBuffer2 - Copy data between buffer regions
+--
+-- = Description
+--
+-- This command is functionally identical to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer', but includes
+-- extensible sub-structures that include @sType@ and @pNext@ parameters,
+-- allowing them to be more easily extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyBuffer2-commandBuffer-01822# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyBuffer2-commandBuffer-01823# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyBuffer2-commandBuffer-01824# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyBuffer2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyBuffer2-pCopyBufferInfo-parameter# @pCopyBufferInfo@
+--     /must/ be a valid pointer to a valid 'CopyBufferInfo2' structure
+--
+-- -   #VUID-vkCmdCopyBuffer2-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-vkCmdCopyBuffer2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyBuffer2-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyBufferInfo2'
+cmdCopyBuffer2 :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer into which the command will be
+                  -- recorded.
+                  CommandBuffer
+               -> -- | @pCopyBufferInfo@ is a pointer to a 'CopyBufferInfo2' structure
+                  -- describing the copy parameters.
+                  CopyBufferInfo2
+               -> io ()
+cmdCopyBuffer2 commandBuffer copyBufferInfo = liftIO . evalContT $ do
+  let vkCmdCopyBuffer2Ptr = pVkCmdCopyBuffer2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyBuffer2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBuffer2 is null" Nothing Nothing
+  let vkCmdCopyBuffer2' = mkVkCmdCopyBuffer2 vkCmdCopyBuffer2Ptr
+  pCopyBufferInfo <- ContT $ withCStruct (copyBufferInfo)
+  lift $ traceAroundEvent "vkCmdCopyBuffer2" (vkCmdCopyBuffer2' (commandBufferHandle (commandBuffer)) pCopyBufferInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyImage2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyImageInfo2 -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyImageInfo2 -> IO ()
+
+-- | vkCmdCopyImage2 - Copy data between images
+--
+-- = Description
+--
+-- This command is functionally identical to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage', but includes
+-- extensible sub-structures that include @sType@ and @pNext@ parameters,
+-- allowing them to be more easily extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-01825# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-01826# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-01827# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyImage2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyImage2-pCopyImageInfo-parameter# @pCopyImageInfo@
+--     /must/ be a valid pointer to a valid 'CopyImageInfo2' structure
+--
+-- -   #VUID-vkCmdCopyImage2-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-vkCmdCopyImage2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyImage2-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyImageInfo2'
+cmdCopyImage2 :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which the command will be
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @pCopyImageInfo@ is a pointer to a 'CopyImageInfo2' structure describing
+                 -- the copy parameters.
+                 CopyImageInfo2
+              -> io ()
+cmdCopyImage2 commandBuffer copyImageInfo = liftIO . evalContT $ do
+  let vkCmdCopyImage2Ptr = pVkCmdCopyImage2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyImage2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImage2 is null" Nothing Nothing
+  let vkCmdCopyImage2' = mkVkCmdCopyImage2 vkCmdCopyImage2Ptr
+  pCopyImageInfo <- ContT $ withCStruct (copyImageInfo)
+  lift $ traceAroundEvent "vkCmdCopyImage2" (vkCmdCopyImage2' (commandBufferHandle (commandBuffer)) pCopyImageInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBlitImage2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr BlitImageInfo2 -> IO ()) -> Ptr CommandBuffer_T -> Ptr BlitImageInfo2 -> IO ()
+
+-- | vkCmdBlitImage2 - Copy regions of an image, potentially performing
+-- format conversion,
+--
+-- = Description
+--
+-- This command is functionally identical to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage', but includes
+-- extensible sub-structures that include @sType@ and @pNext@ parameters,
+-- allowing them to be more easily extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBlitImage2-commandBuffer-01834# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdBlitImage2-commandBuffer-01835# If @commandBuffer@ is an
+--     unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdBlitImage2-commandBuffer-01836# If @commandBuffer@ is a
+--     protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBlitImage2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBlitImage2-pBlitImageInfo-parameter# @pBlitImageInfo@
+--     /must/ be a valid pointer to a valid 'BlitImageInfo2' structure
+--
+-- -   #VUID-vkCmdBlitImage2-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-vkCmdBlitImage2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBlitImage2-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'BlitImageInfo2', 'Vulkan.Core10.Handles.CommandBuffer'
+cmdBlitImage2 :: forall io
+               . (MonadIO io)
+              => -- | @commandBuffer@ is the command buffer into which the command will be
+                 -- recorded.
+                 CommandBuffer
+              -> -- | @pBlitImageInfo@ is a pointer to a 'BlitImageInfo2' structure describing
+                 -- the blit parameters.
+                 BlitImageInfo2
+              -> io ()
+cmdBlitImage2 commandBuffer blitImageInfo = liftIO . evalContT $ do
+  let vkCmdBlitImage2Ptr = pVkCmdBlitImage2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBlitImage2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBlitImage2 is null" Nothing Nothing
+  let vkCmdBlitImage2' = mkVkCmdBlitImage2 vkCmdBlitImage2Ptr
+  pBlitImageInfo <- ContT $ withCStruct (blitImageInfo)
+  lift $ traceAroundEvent "vkCmdBlitImage2" (vkCmdBlitImage2' (commandBufferHandle (commandBuffer)) pBlitImageInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyBufferToImage2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyBufferToImageInfo2 -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyBufferToImageInfo2 -> IO ()
+
+-- | vkCmdCopyBufferToImage2 - Copy data from a buffer into an image
+--
+-- = Description
+--
+-- This command is functionally identical to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage', but includes
+-- extensible sub-structures that include @sType@ and @pNext@ parameters,
+-- allowing them to be more easily extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-01828# If
+--     @commandBuffer@ is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-01829# If
+--     @commandBuffer@ is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-01830# If
+--     @commandBuffer@ is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-pCopyBufferToImageInfo-parameter#
+--     @pCopyBufferToImageInfo@ /must/ be a valid pointer to a valid
+--     'CopyBufferToImageInfo2' structure
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-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-vkCmdCopyBufferToImage2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyBufferToImage2-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyBufferToImageInfo2'
+cmdCopyBufferToImage2 :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer into which the command will be
+                         -- recorded.
+                         CommandBuffer
+                      -> -- | @pCopyBufferToImageInfo@ is a pointer to a 'CopyBufferToImageInfo2'
+                         -- structure describing the copy parameters.
+                         CopyBufferToImageInfo2
+                      -> io ()
+cmdCopyBufferToImage2 commandBuffer copyBufferToImageInfo = liftIO . evalContT $ do
+  let vkCmdCopyBufferToImage2Ptr = pVkCmdCopyBufferToImage2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyBufferToImage2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBufferToImage2 is null" Nothing Nothing
+  let vkCmdCopyBufferToImage2' = mkVkCmdCopyBufferToImage2 vkCmdCopyBufferToImage2Ptr
+  pCopyBufferToImageInfo <- ContT $ withCStruct (copyBufferToImageInfo)
+  lift $ traceAroundEvent "vkCmdCopyBufferToImage2" (vkCmdCopyBufferToImage2' (commandBufferHandle (commandBuffer)) pCopyBufferToImageInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdCopyImageToBuffer2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyImageToBufferInfo2 -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyImageToBufferInfo2 -> IO ()
+
+-- | vkCmdCopyImageToBuffer2 - Copy image data into a buffer
+--
+-- = Description
+--
+-- This command is functionally identical to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer', but includes
+-- extensible sub-structures that include @sType@ and @pNext@ parameters,
+-- allowing them to be more easily extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-01831# If
+--     @commandBuffer@ is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-01832# If
+--     @commandBuffer@ is an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be a protected buffer
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-01833# If
+--     @commandBuffer@ is a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-pCopyImageToBufferInfo-parameter#
+--     @pCopyImageToBufferInfo@ /must/ be a valid pointer to a valid
+--     'CopyImageToBufferInfo2' structure
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-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-vkCmdCopyImageToBuffer2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdCopyImageToBuffer2-renderpass# This command /must/ only
+--     be called outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyImageToBufferInfo2'
+cmdCopyImageToBuffer2 :: forall io
+                       . (MonadIO io)
+                      => -- | @commandBuffer@ is the command buffer into which the command will be
+                         -- recorded.
+                         CommandBuffer
+                      -> -- | @pCopyImageToBufferInfo@ is a pointer to a 'CopyImageToBufferInfo2'
+                         -- structure describing the copy parameters.
+                         CopyImageToBufferInfo2
+                      -> io ()
+cmdCopyImageToBuffer2 commandBuffer copyImageToBufferInfo = liftIO . evalContT $ do
+  let vkCmdCopyImageToBuffer2Ptr = pVkCmdCopyImageToBuffer2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdCopyImageToBuffer2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImageToBuffer2 is null" Nothing Nothing
+  let vkCmdCopyImageToBuffer2' = mkVkCmdCopyImageToBuffer2 vkCmdCopyImageToBuffer2Ptr
+  pCopyImageToBufferInfo <- ContT $ withCStruct (copyImageToBufferInfo)
+  lift $ traceAroundEvent "vkCmdCopyImageToBuffer2" (vkCmdCopyImageToBuffer2' (commandBufferHandle (commandBuffer)) pCopyImageToBufferInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResolveImage2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr ResolveImageInfo2 -> IO ()) -> Ptr CommandBuffer_T -> Ptr ResolveImageInfo2 -> IO ()
+
+-- | vkCmdResolveImage2 - Resolve regions of an image
+--
+-- = Description
+--
+-- This command is functionally identical to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage', but includes
+-- extensible sub-structures that include @sType@ and @pNext@ parameters,
+-- allowing them to be more easily extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdResolveImage2-commandBuffer-01837# If @commandBuffer@ is
+--     an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @srcImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdResolveImage2-commandBuffer-01838# If @commandBuffer@ is
+--     an unprotected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be a protected image
+--
+-- -   #VUID-vkCmdResolveImage2-commandBuffer-01839# If @commandBuffer@ is
+--     a protected command buffer and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
+--     is not supported, @dstImage@ /must/ not be an unprotected image
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdResolveImage2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdResolveImage2-pResolveImageInfo-parameter#
+--     @pResolveImageInfo@ /must/ be a valid pointer to a valid
+--     'ResolveImageInfo2' structure
+--
+-- -   #VUID-vkCmdResolveImage2-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-vkCmdResolveImage2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdResolveImage2-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'ResolveImageInfo2'
+cmdResolveImage2 :: forall io
+                  . (MonadIO io)
+                 => -- | @commandBuffer@ is the command buffer into which the command will be
+                    -- recorded.
+                    CommandBuffer
+                 -> -- | @pResolveImageInfo@ is a pointer to a 'ResolveImageInfo2' structure
+                    -- describing the resolve parameters.
+                    ResolveImageInfo2
+                 -> io ()
+cmdResolveImage2 commandBuffer resolveImageInfo = liftIO . evalContT $ do
+  let vkCmdResolveImage2Ptr = pVkCmdResolveImage2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdResolveImage2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResolveImage2 is null" Nothing Nothing
+  let vkCmdResolveImage2' = mkVkCmdResolveImage2 vkCmdResolveImage2Ptr
+  pResolveImageInfo <- ContT $ withCStruct (resolveImageInfo)
+  lift $ traceAroundEvent "vkCmdResolveImage2" (vkCmdResolveImage2' (commandBufferHandle (commandBuffer)) pResolveImageInfo)
+  pure $ ()
+
+
+-- | VkBufferCopy2 - Structure specifying a buffer copy operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBufferCopy2-size-01988# The @size@ /must/ be greater than
+--     @0@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBufferCopy2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_COPY_2'
+--
+-- -   #VUID-VkBufferCopy2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'CopyBufferInfo2', 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data BufferCopy2 = BufferCopy2
+  { -- | @srcOffset@ is the starting offset in bytes from the start of
+    -- @srcBuffer@.
+    srcOffset :: DeviceSize
+  , -- | @dstOffset@ is the starting offset in bytes from the start of
+    -- @dstBuffer@.
+    dstOffset :: DeviceSize
+  , -- | @size@ is the number of bytes to copy.
+    size :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferCopy2)
+#endif
+deriving instance Show BufferCopy2
+
+instance ToCStruct BufferCopy2 where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferCopy2{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_COPY_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (srcOffset)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (dstOffset)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_COPY_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct BufferCopy2 where
+  peekCStruct p = do
+    srcOffset <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    dstOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
+    pure $ BufferCopy2
+             srcOffset dstOffset size
+
+instance Storable BufferCopy2 where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BufferCopy2 where
+  zero = BufferCopy2
+           zero
+           zero
+           zero
+
+
+-- | VkImageCopy2 - Structure specifying an image copy operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageCopy2-extent-00140# The number of slices of the
+--     @extent@ (for 3D) or layers of the @srcSubresource@ (for non-3D)
+--     /must/ match the number of slices of the @extent@ (for 3D) or layers
+--     of the @dstSubresource@ (for non-3D)
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageCopy2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COPY_2'
+--
+-- -   #VUID-VkImageCopy2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkImageCopy2-srcSubresource-parameter# @srcSubresource@ /must/
+--     be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- -   #VUID-VkImageCopy2-dstSubresource-parameter# @dstSubresource@ /must/
+--     be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'CopyImageInfo2', 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImageCopy2 = ImageCopy2
+  { -- | @srcSubresource@ and @dstSubresource@ are
+    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' structures
+    -- specifying the image subresources of the images used for the source and
+    -- destination image data, respectively.
+    srcSubresource :: ImageSubresourceLayers
+  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
+    -- in texels of the sub-regions of the source and destination image data.
+    srcOffset :: Offset3D
+  , -- No documentation found for Nested "VkImageCopy2" "dstSubresource"
+    dstSubresource :: ImageSubresourceLayers
+  , -- No documentation found for Nested "VkImageCopy2" "dstOffset"
+    dstOffset :: Offset3D
+  , -- | @extent@ is the size in texels of the image to copy in @width@, @height@
+    -- and @depth@.
+    extent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageCopy2)
+#endif
+deriving instance Show ImageCopy2
+
+instance ToCStruct ImageCopy2 where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageCopy2{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset)
+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource)
+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset)
+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (extent)
+    f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct ImageCopy2 where
+  peekCStruct p = do
+    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
+    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
+    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers))
+    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 60 :: Ptr Offset3D))
+    extent <- peekCStruct @Extent3D ((p `plusPtr` 72 :: Ptr Extent3D))
+    pure $ ImageCopy2
+             srcSubresource srcOffset dstSubresource dstOffset extent
+
+instance Storable ImageCopy2 where
+  sizeOf ~_ = 88
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageCopy2 where
+  zero = ImageCopy2
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkImageBlit2 - Structure specifying an image blit operation
+--
+-- = Description
+--
+-- For each element of the @pRegions@ array, a blit operation is performed
+-- for the specified source and destination regions.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageBlit2-aspectMask-00238# The @aspectMask@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ match
+--
+-- -   #VUID-VkImageBlit2-layerCount-00239# The @layerCount@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ match
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageBlit2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_BLIT_2'
+--
+-- -   #VUID-VkImageBlit2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkImageBlit2-srcSubresource-parameter# @srcSubresource@ /must/
+--     be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- -   #VUID-VkImageBlit2-dstSubresource-parameter# @dstSubresource@ /must/
+--     be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'BlitImageInfo2',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImageBlit2 (es :: [Type]) = ImageBlit2
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @srcSubresource@ is the subresource to blit from.
+    srcSubresource :: ImageSubresourceLayers
+  , -- | @srcOffsets@ is a pointer to an array of two
+    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
+    -- bounds of the source region within @srcSubresource@.
+    srcOffsets :: (Offset3D, Offset3D)
+  , -- | @dstSubresource@ is the subresource to blit into.
+    dstSubresource :: ImageSubresourceLayers
+  , -- | @dstOffsets@ is a pointer to an array of two
+    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
+    -- bounds of the destination region within @dstSubresource@.
+    dstOffsets :: (Offset3D, Offset3D)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageBlit2 (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (ImageBlit2 es)
+
+instance Extensible ImageBlit2 where
+  extensibleTypeName = "ImageBlit2"
+  setNext ImageBlit2{..} next' = ImageBlit2{next = next', ..}
+  getNext ImageBlit2{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageBlit2 e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @CopyCommandTransformInfoQCOM = Just f
+    | otherwise = Nothing
+
+instance (Extendss ImageBlit2 es, PokeChain es) => ToCStruct (ImageBlit2 es) where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageBlit2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_BLIT_2)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)
+    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))
+    lift $ case (srcOffsets) of
+      (e0, e1) -> do
+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (dstSubresource)
+    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))
+    lift $ case (dstOffsets) of
+      (e0, e1) -> do
+        poke (pDstOffsets' :: Ptr Offset3D) (e0)
+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_BLIT_2)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
+    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))
+    lift $ case ((zero, zero)) of
+      (e0, e1) -> do
+        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
+        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (zero)
+    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))
+    lift $ case ((zero, zero)) of
+      (e0, e1) -> do
+        poke (pDstOffsets' :: Ptr Offset3D) (e0)
+        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
+    lift $ f
+
+instance (Extendss ImageBlit2 es, PeekChain es) => FromCStruct (ImageBlit2 es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
+    let psrcOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))
+    srcOffsets0 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
+    srcOffsets1 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
+    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers))
+    let pdstOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))
+    dstOffsets0 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
+    dstOffsets1 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
+    pure $ ImageBlit2
+             next srcSubresource ((srcOffsets0, srcOffsets1)) dstSubresource ((dstOffsets0, dstOffsets1))
+
+instance es ~ '[] => Zero (ImageBlit2 es) where
+  zero = ImageBlit2
+           ()
+           zero
+           (zero, zero)
+           zero
+           (zero, zero)
+
+
+-- | VkBufferImageCopy2 - Structure specifying a buffer image copy operation
+--
+-- = Description
+--
+-- This structure is functionally identical to
+-- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy', but adds @sType@
+-- and @pNext@ parameters, allowing it to be more easily extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBufferImageCopy2-bufferRowLength-00195# @bufferRowLength@
+--     /must/ be @0@, or greater than or equal to the @width@ member of
+--     @imageExtent@
+--
+-- -   #VUID-VkBufferImageCopy2-bufferImageHeight-00196#
+--     @bufferImageHeight@ /must/ be @0@, or greater than or equal to the
+--     @height@ member of @imageExtent@
+--
+-- -   #VUID-VkBufferImageCopy2-aspectMask-00212# The @aspectMask@ member
+--     of @imageSubresource@ /must/ only have a single bit set
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBufferImageCopy2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2'
+--
+-- -   #VUID-VkBufferImageCopy2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkBufferImageCopy2-imageSubresource-parameter#
+--     @imageSubresource@ /must/ be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'CopyBufferToImageInfo2', 'CopyImageToBufferInfo2',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data BufferImageCopy2 (es :: [Type]) = BufferImageCopy2
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @bufferOffset@ is the offset in bytes from the start of the buffer
+    -- object where the image data is copied from or to.
+    bufferOffset :: DeviceSize
+  , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion
+    -- of a larger two- or three-dimensional image in buffer memory, and
+    -- control the addressing calculations. If either of these values is zero,
+    -- that aspect of the buffer memory is considered to be tightly packed
+    -- according to the @imageExtent@.
+    bufferRowLength :: Word32
+  , -- No documentation found for Nested "VkBufferImageCopy2" "bufferImageHeight"
+    bufferImageHeight :: Word32
+  , -- | @imageSubresource@ is a
+    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' used to
+    -- specify the specific image subresources of the image used for the source
+    -- or destination image data.
+    imageSubresource :: ImageSubresourceLayers
+  , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the
+    -- sub-region of the source or destination image data.
+    imageOffset :: Offset3D
+  , -- | @imageExtent@ is the size in texels of the image to copy in @width@,
+    -- @height@ and @depth@.
+    imageExtent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferImageCopy2 (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (BufferImageCopy2 es)
+
+instance Extensible BufferImageCopy2 where
+  extensibleTypeName = "BufferImageCopy2"
+  setNext BufferImageCopy2{..} next' = BufferImageCopy2{next = next', ..}
+  getNext BufferImageCopy2{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferImageCopy2 e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @CopyCommandTransformInfoQCOM = Just f
+    | otherwise = Nothing
+
+instance (Extendss BufferImageCopy2 es, PokeChain es) => ToCStruct (BufferImageCopy2 es) where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferImageCopy2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (bufferOffset)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (bufferRowLength)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (bufferImageHeight)
+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent)
+    lift $ f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero)
+    lift $ poke ((p `plusPtr` 48 :: Ptr Offset3D)) (zero)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Extent3D)) (zero)
+    lift $ f
+
+instance (Extendss BufferImageCopy2 es, PeekChain es) => FromCStruct (BufferImageCopy2 es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    bufferOffset <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    bufferRowLength <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    bufferImageHeight <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
+    imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers))
+    imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 48 :: Ptr Offset3D))
+    imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 60 :: Ptr Extent3D))
+    pure $ BufferImageCopy2
+             next bufferOffset bufferRowLength bufferImageHeight imageSubresource imageOffset imageExtent
+
+instance es ~ '[] => Zero (BufferImageCopy2 es) where
+  zero = BufferImageCopy2
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkImageResolve2 - Structure specifying an image resolve operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageResolve2-aspectMask-00266# The @aspectMask@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ only contain
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkImageResolve2-layerCount-00267# The @layerCount@ member of
+--     @srcSubresource@ and @dstSubresource@ /must/ match
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageResolve2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_RESOLVE_2'
+--
+-- -   #VUID-VkImageResolve2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkImageResolve2-srcSubresource-parameter# @srcSubresource@
+--     /must/ be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- -   #VUID-VkImageResolve2-dstSubresource-parameter# @dstSubresource@
+--     /must/ be a valid
+--     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
+--     structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent3D',
+-- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
+-- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'ResolveImageInfo2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImageResolve2 = ImageResolve2
+  { -- | @srcSubresource@ and @dstSubresource@ are
+    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' structures
+    -- specifying the image subresources of the images used for the source and
+    -- destination image data, respectively. Resolve of depth\/stencil images
+    -- is not supported.
+    srcSubresource :: ImageSubresourceLayers
+  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
+    -- in texels of the sub-regions of the source and destination image data.
+    srcOffset :: Offset3D
+  , -- No documentation found for Nested "VkImageResolve2" "dstSubresource"
+    dstSubresource :: ImageSubresourceLayers
+  , -- No documentation found for Nested "VkImageResolve2" "dstOffset"
+    dstOffset :: Offset3D
+  , -- | @extent@ is the size in texels of the source image to resolve in
+    -- @width@, @height@ and @depth@.
+    extent :: Extent3D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageResolve2)
+#endif
+deriving instance Show ImageResolve2
+
+instance ToCStruct ImageResolve2 where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageResolve2{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset)
+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource)
+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset)
+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (extent)
+    f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero)
+    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (zero)
+    f
+
+instance FromCStruct ImageResolve2 where
+  peekCStruct p = do
+    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
+    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
+    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers))
+    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 60 :: Ptr Offset3D))
+    extent <- peekCStruct @Extent3D ((p `plusPtr` 72 :: Ptr Extent3D))
+    pure $ ImageResolve2
+             srcSubresource srcOffset dstSubresource dstOffset extent
+
+instance Storable ImageResolve2 where
+  sizeOf ~_ = 88
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero ImageResolve2 where
+  zero = ImageResolve2
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkCopyBufferInfo2 - Structure specifying parameters of a buffer copy
+-- command
+--
+-- = Description
+--
+-- Members defined by this structure with the same name as parameters in
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer' have the identical
+-- effect to those parameters; the child structure 'BufferCopy2' is a
+-- variant of 'Vulkan.Core10.CommandBufferBuilding.BufferCopy' which
+-- includes @sType@ and @pNext@ parameters, allowing it to be extended.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyBufferInfo2-srcOffset-00113# The @srcOffset@ member of
+--     each element of @pRegions@ /must/ be less than the size of
+--     @srcBuffer@
+--
+-- -   #VUID-VkCopyBufferInfo2-dstOffset-00114# The @dstOffset@ member of
+--     each element of @pRegions@ /must/ be less than the size of
+--     @dstBuffer@
+--
+-- -   #VUID-VkCopyBufferInfo2-size-00115# The @size@ member of each
+--     element of @pRegions@ /must/ be less than or equal to the size of
+--     @srcBuffer@ minus @srcOffset@
+--
+-- -   #VUID-VkCopyBufferInfo2-size-00116# The @size@ member of each
+--     element of @pRegions@ /must/ be less than or equal to the size of
+--     @dstBuffer@ minus @dstOffset@
+--
+-- -   #VUID-VkCopyBufferInfo2-pRegions-00117# The union of the source
+--     regions, and the union of the destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-VkCopyBufferInfo2-srcBuffer-00118# @srcBuffer@ /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyBufferInfo2-srcBuffer-00119# If @srcBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyBufferInfo2-dstBuffer-00120# @dstBuffer@ /must/ have
+--     been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyBufferInfo2-dstBuffer-00121# If @dstBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyBufferInfo2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_INFO_2'
+--
+-- -   #VUID-VkCopyBufferInfo2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyBufferInfo2-srcBuffer-parameter# @srcBuffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkCopyBufferInfo2-dstBuffer-parameter# @dstBuffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkCopyBufferInfo2-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'BufferCopy2'
+--     structures
+--
+-- -   #VUID-VkCopyBufferInfo2-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-VkCopyBufferInfo2-commonparent# Both of @dstBuffer@, and
+--     @srcBuffer@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Buffer', 'BufferCopy2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdCopyBuffer2',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBuffer2KHR'
+data CopyBufferInfo2 = CopyBufferInfo2
+  { -- | @srcBuffer@ is the source buffer.
+    srcBuffer :: Buffer
+  , -- | @dstBuffer@ is the destination buffer.
+    dstBuffer :: Buffer
+  , -- | @pRegions@ is a pointer to an array of 'BufferCopy2' structures
+    -- specifying the regions to copy.
+    regions :: Vector BufferCopy2
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyBufferInfo2)
+#endif
+deriving instance Show CopyBufferInfo2
+
+instance ToCStruct CopyBufferInfo2 where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyBufferInfo2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_INFO_2)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Buffer)) (srcBuffer)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (dstBuffer)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @BufferCopy2 ((Data.Vector.length (regions)) * 40)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (40 * (i)) :: Ptr BufferCopy2) (e)) (regions)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr BufferCopy2))) (pPRegions')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_INFO_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)
+    f
+
+instance FromCStruct CopyBufferInfo2 where
+  peekCStruct p = do
+    srcBuffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
+    dstBuffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))
+    regionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pRegions <- peek @(Ptr BufferCopy2) ((p `plusPtr` 40 :: Ptr (Ptr BufferCopy2)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @BufferCopy2 ((pRegions `advancePtrBytes` (40 * (i)) :: Ptr BufferCopy2)))
+    pure $ CopyBufferInfo2
+             srcBuffer dstBuffer pRegions'
+
+instance Zero CopyBufferInfo2 where
+  zero = CopyBufferInfo2
+           zero
+           zero
+           mempty
+
+
+-- | VkCopyImageInfo2 - Structure specifying parameters of an image copy
+-- command
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyImageInfo2-pRegions-00124# The union of all source
+--     regions, and the union of all destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01995# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-00126# @srcImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01546# If @srcImage@ is non-sparse
+--     then the image or /disjoint/ plane to be copied /must/ be bound
+--     completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyImageInfo2-srcImageLayout-00128# @srcImageLayout@ /must/
+--     specify the layout of the image subresources of @srcImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkCopyImageInfo2-srcImageLayout-01917# @srcImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01996# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-00131# @dstImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01547# If @dstImage@ is non-sparse
+--     then the image or /disjoint/ plane that is the destination of the
+--     copy /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyImageInfo2-dstImageLayout-00133# @dstImageLayout@ /must/
+--     specify the layout of the image subresources of @dstImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkCopyImageInfo2-dstImageLayout-01395# @dstImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01548# If the
+--     'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
+--     @dstImage@ is not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
+--     @dstImage@ /must/ be compatible, as defined
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibility above>
+--
+-- -   #VUID-VkCopyImageInfo2-None-01549# In a copy to or from a plane of a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image>,
+--     the 'Vulkan.Core10.Enums.Format.Format' of the image and plane
+--     /must/ be compatible according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes>
+--     for the plane being copied
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-00136# The sample count of
+--     @srcImage@ and @dstImage@ /must/ match
+--
+-- -   #VUID-VkCopyImageInfo2-srcSubresource-01696# The
+--     @srcSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-VkCopyImageInfo2-dstSubresource-01697# The
+--     @dstSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-VkCopyImageInfo2-srcSubresource-01698# The
+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-VkCopyImageInfo2-dstSubresource-01699# The
+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-VkCopyImageInfo2-srcOffset-01783# The @srcOffset@ and @extent@
+--     members of each element of @pRegions@ /must/ respect the image
+--     transfer granularity requirements of @commandBuffer@’s command
+--     pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-VkCopyImageInfo2-dstOffset-01784# The @dstOffset@ and @extent@
+--     members of each element of @pRegions@ /must/ respect the image
+--     transfer granularity requirements of @commandBuffer@’s command
+--     pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-02542# @dstImage@ and @srcImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01551# If neither @srcImage@ nor
+--     @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
+--     then for each element of @pRegions@, @srcSubresource.aspectMask@ and
+--     @dstSubresource.aspectMask@ /must/ match
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01552# If @srcImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
+--     then for each element of @pRegions@, @srcSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01553# If @srcImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
+--     then for each element of @pRegions@, @srcSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01554# If @dstImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
+--     then for each element of @pRegions@, @dstSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01555# If @dstImage@ has a
+--     'Vulkan.Core10.Enums.Format.Format' with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
+--     then for each element of @pRegions@, @dstSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01556# If @srcImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
+--     and the @dstImage@ does not have a multi-planar image format, then
+--     for each element of @pRegions@, @dstSubresource.aspectMask@ /must/
+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01557# If @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
+--     and the @srcImage@ does not have a multi-planar image format, then
+--     for each element of @pRegions@, @srcSubresource.aspectMask@ /must/
+--     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-04443# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @srcSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-04444# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @dstSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkCopyImageInfo2-aspectMask-00142# For each element of
+--     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
+--     present in @srcImage@
+--
+-- -   #VUID-VkCopyImageInfo2-aspectMask-00143# For each element of
+--     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
+--     present in @dstImage@
+--
+-- -   #VUID-VkCopyImageInfo2-srcOffset-00144# For each element of
+--     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkCopyImageInfo2-srcOffset-00145# For each element of
+--     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-00146# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-VkCopyImageInfo2-srcOffset-00147# For each element of
+--     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01785# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01786# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01787# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @srcOffset.z@ /must/ be @0@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01788# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @dstOffset.z@ /must/ be @0@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01790# If @srcImage@ and @dstImage@
+--     are both of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then
+--     for each element of @pRegions@, @extent.depth@ /must/ be @1@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01791# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @dstImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
+--     element of @pRegions@, @extent.depth@ /must/ equal
+--     @srcSubresource.layerCount@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01792# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @srcImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
+--     element of @pRegions@, @extent.depth@ /must/ equal
+--     @dstSubresource.layerCount@
+--
+-- -   #VUID-VkCopyImageInfo2-dstOffset-00150# For each element of
+--     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyImageInfo2-dstOffset-00151# For each element of
+--     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-00152# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-VkCopyImageInfo2-dstOffset-00153# For each element of
+--     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01727# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, all members of @srcOffset@
+--     /must/ be a multiple of the corresponding dimensions of the
+--     compressed texel block
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01728# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@extent.width@ +
+--     @srcOffset.x@) /must/ equal the width of the specified
+--     @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01729# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.height@ /must/ be a
+--     multiple of the compressed texel block height or (@extent.height@ +
+--     @srcOffset.y@) /must/ equal the height of the specified
+--     @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-01730# If @srcImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@extent.depth@ +
+--     @srcOffset.z@) /must/ equal the depth of the specified
+--     @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01731# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, all members of @dstOffset@
+--     /must/ be a multiple of the corresponding dimensions of the
+--     compressed texel block
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01732# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@extent.width@ +
+--     @dstOffset.x@) /must/ equal the width of the specified
+--     @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01733# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.height@ /must/ be a
+--     multiple of the compressed texel block height or (@extent.height@ +
+--     @dstOffset.y@) /must/ equal the height of the specified
+--     @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-01734# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     then for each element of @pRegions@, @extent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@extent.depth@ +
+--     @dstOffset.z@) /must/ equal the depth of the specified
+--     @dstSubresource@ of @dstImage@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyImageInfo2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_INFO_2'
+--
+-- -   #VUID-VkCopyImageInfo2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyImageInfo2-srcImage-parameter# @srcImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyImageInfo2-srcImageLayout-parameter# @srcImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-VkCopyImageInfo2-dstImage-parameter# @dstImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyImageInfo2-dstImageLayout-parameter# @dstImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-VkCopyImageInfo2-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'ImageCopy2'
+--     structures
+--
+-- -   #VUID-VkCopyImageInfo2-regionCount-arraylength# @regionCount@ /must/
+--     be greater than @0@
+--
+-- -   #VUID-VkCopyImageInfo2-commonparent# Both of @dstImage@, and
+--     @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Image', 'ImageCopy2',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdCopyImage2',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImage2KHR'
+data CopyImageInfo2 = CopyImageInfo2
+  { -- | @srcImage@ is the source image.
+    srcImage :: Image
+  , -- | @srcImageLayout@ is the current layout of the source image subresource.
+    srcImageLayout :: ImageLayout
+  , -- | @dstImage@ is the destination image.
+    dstImage :: Image
+  , -- | @dstImageLayout@ is the current layout of the destination image
+    -- subresource.
+    dstImageLayout :: ImageLayout
+  , -- | @pRegions@ is a pointer to an array of 'ImageCopy2' structures
+    -- specifying the regions to copy.
+    regions :: Vector ImageCopy2
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyImageInfo2)
+#endif
+deriving instance Show CopyImageInfo2
+
+instance ToCStruct CopyImageInfo2 where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyImageInfo2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_INFO_2)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (dstImage)
+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @ImageCopy2 ((Data.Vector.length (regions)) * 88)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageCopy2) (e)) (regions)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageCopy2))) (pPRegions')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_INFO_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct CopyImageInfo2 where
+  peekCStruct p = do
+    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
+    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    dstImage <- peek @Image ((p `plusPtr` 32 :: Ptr Image))
+    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 40 :: Ptr ImageLayout))
+    regionCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    pRegions <- peek @(Ptr ImageCopy2) ((p `plusPtr` 48 :: Ptr (Ptr ImageCopy2)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageCopy2 ((pRegions `advancePtrBytes` (88 * (i)) :: Ptr ImageCopy2)))
+    pure $ CopyImageInfo2
+             srcImage srcImageLayout dstImage dstImageLayout pRegions'
+
+instance Zero CopyImageInfo2 where
+  zero = CopyImageInfo2
+           zero
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkBlitImageInfo2 - Structure specifying parameters of blit image command
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBlitImageInfo2-pRegions-00215# The source region specified
+--     by each element of @pRegions@ /must/ be a region that is contained
+--     within @srcImage@
+--
+-- -   #VUID-VkBlitImageInfo2-pRegions-00216# The destination region
+--     specified by each element of @pRegions@ /must/ be a region that is
+--     contained within @dstImage@
+--
+-- -   #VUID-VkBlitImageInfo2-pRegions-00217# The union of all destination
+--     regions, specified by the elements of @pRegions@, /must/ not overlap
+--     in memory with any texel that /may/ be sampled during the blit
+--     operation
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-01999# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-06421# @srcImage@ /must/ not use a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00219# @srcImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00220# If @srcImage@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkBlitImageInfo2-srcImageLayout-00221# @srcImageLayout@ /must/
+--     specify the layout of the image subresources of @srcImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkBlitImageInfo2-srcImageLayout-01398# @srcImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-02000# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-06422# @dstImage@ /must/ not use a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-00224# @dstImage@ /must/ have been
+--     created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-00225# If @dstImage@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkBlitImageInfo2-dstImageLayout-00226# @dstImageLayout@ /must/
+--     specify the layout of the image subresources of @dstImage@ specified
+--     in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkBlitImageInfo2-dstImageLayout-01399# @dstImageLayout@ /must/
+--     be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00229# If either of @srcImage@ or
+--     @dstImage@ was created with a signed integer
+--     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
+--     created with a signed integer 'Vulkan.Core10.Enums.Format.Format'
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00230# If either of @srcImage@ or
+--     @dstImage@ was created with an unsigned integer
+--     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
+--     created with an unsigned integer 'Vulkan.Core10.Enums.Format.Format'
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00231# If either of @srcImage@ or
+--     @dstImage@ was created with a depth\/stencil format, the other
+--     /must/ have exactly the same format
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00232# If @srcImage@ was created
+--     with a depth\/stencil format, @filter@ /must/ be
+--     'Vulkan.Core10.Enums.Filter.FILTER_NEAREST'
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00233# @srcImage@ /must/ have been
+--     created with a @samples@ value of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-00234# @dstImage@ /must/ have been
+--     created with a @samples@ value of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkBlitImageInfo2-filter-02001# If @filter@ is
+--     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
+--
+-- -   #VUID-VkBlitImageInfo2-filter-02002# If @filter@ is
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', then the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
+--
+-- -   #VUID-VkBlitImageInfo2-filter-00237# If @filter@ is
+--     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', @srcImage@
+--     /must/ be of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--
+-- -   #VUID-VkBlitImageInfo2-srcSubresource-01705# The
+--     @srcSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-VkBlitImageInfo2-dstSubresource-01706# The
+--     @dstSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-VkBlitImageInfo2-srcSubresource-01707# The
+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-VkBlitImageInfo2-dstSubresource-01708# The
+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-02545# @dstImage@ and @srcImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00240# If either @srcImage@ or
+--     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
+--     then for each element of @pRegions@, @srcSubresource.baseArrayLayer@
+--     and @dstSubresource.baseArrayLayer@ /must/ each be @0@, and
+--     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/
+--     each be @1@
+--
+-- -   #VUID-VkBlitImageInfo2-aspectMask-00241# For each element of
+--     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
+--     present in @srcImage@
+--
+-- -   #VUID-VkBlitImageInfo2-aspectMask-00242# For each element of
+--     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
+--     present in @dstImage@
+--
+-- -   #VUID-VkBlitImageInfo2-srcOffset-00243# For each element of
+--     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be
+--     greater than or equal to @0@ and less than or equal to the width of
+--     the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkBlitImageInfo2-srcOffset-00244# For each element of
+--     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be
+--     greater than or equal to @0@ and less than or equal to the height of
+--     the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00245# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y
+--     /must/ be @1@
+--
+-- -   #VUID-VkBlitImageInfo2-srcOffset-00246# For each element of
+--     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be
+--     greater than or equal to @0@ and less than or equal to the depth of
+--     the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-00247# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z
+--     /must/ be @1@
+--
+-- -   #VUID-VkBlitImageInfo2-dstOffset-00248# For each element of
+--     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be
+--     greater than or equal to @0@ and less than or equal to the width of
+--     the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkBlitImageInfo2-dstOffset-00249# For each element of
+--     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be
+--     greater than or equal to @0@ and less than or equal to the height of
+--     the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-00250# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y
+--     /must/ be @1@
+--
+-- -   #VUID-VkBlitImageInfo2-dstOffset-00251# For each element of
+--     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be
+--     greater than or equal to @0@ and less than or equal to the depth of
+--     the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-00252# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z
+--     /must/ be @1@
+--
+-- -   #VUID-VkBlitImageInfo2-pRegions-04561# If any element of @pRegions@
+--     contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @srcImage@ and @dstImage@ /must/ not be
+--     block-compressed images
+--
+-- -   #VUID-VkBlitImageInfo2KHR-pRegions-06207# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @srcImage@ /must/ be of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--
+-- -   #VUID-VkBlitImageInfo2KHR-pRegions-06208# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @srcImage@ /must/ not have a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBlitImageInfo2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BLIT_IMAGE_INFO_2'
+--
+-- -   #VUID-VkBlitImageInfo2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkBlitImageInfo2-srcImage-parameter# @srcImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkBlitImageInfo2-srcImageLayout-parameter# @srcImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-VkBlitImageInfo2-dstImage-parameter# @dstImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkBlitImageInfo2-dstImageLayout-parameter# @dstImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-VkBlitImageInfo2-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'ImageBlit2'
+--     structures
+--
+-- -   #VUID-VkBlitImageInfo2-filter-parameter# @filter@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Filter.Filter' value
+--
+-- -   #VUID-VkBlitImageInfo2-regionCount-arraylength# @regionCount@ /must/
+--     be greater than @0@
+--
+-- -   #VUID-VkBlitImageInfo2-commonparent# Both of @dstImage@, and
+--     @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.Filter.Filter', 'Vulkan.Core10.Handles.Image',
+-- 'ImageBlit2', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBlitImage2',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR'
+data BlitImageInfo2 = BlitImageInfo2
+  { -- | @srcImage@ is the source image.
+    srcImage :: Image
+  , -- | @srcImageLayout@ is the layout of the source image subresources for the
+    -- blit.
+    srcImageLayout :: ImageLayout
+  , -- | @dstImage@ is the destination image.
+    dstImage :: Image
+  , -- | @dstImageLayout@ is the layout of the destination image subresources for
+    -- the blit.
+    dstImageLayout :: ImageLayout
+  , -- | @pRegions@ is a pointer to an array of 'ImageBlit2' structures
+    -- specifying the regions to blit.
+    regions :: Vector (SomeStruct ImageBlit2)
+  , -- | @filter@ is a 'Vulkan.Core10.Enums.Filter.Filter' specifying the filter
+    -- to apply if the blits require scaling.
+    filter' :: Filter
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BlitImageInfo2)
+#endif
+deriving instance Show BlitImageInfo2
+
+instance ToCStruct BlitImageInfo2 where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BlitImageInfo2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BLIT_IMAGE_INFO_2)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (dstImage)
+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @(ImageBlit2 _) ((Data.Vector.length (regions)) * 96)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPRegions' `plusPtr` (96 * (i)) :: Ptr (ImageBlit2 _))) (e) . ($ ())) (regions)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (ImageBlit2 _)))) (pPRegions')
+    lift $ poke ((p `plusPtr` 56 :: Ptr Filter)) (filter')
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BLIT_IMAGE_INFO_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Filter)) (zero)
+    f
+
+instance FromCStruct BlitImageInfo2 where
+  peekCStruct p = do
+    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
+    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    dstImage <- peek @Image ((p `plusPtr` 32 :: Ptr Image))
+    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 40 :: Ptr ImageLayout))
+    regionCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    pRegions <- peek @(Ptr (ImageBlit2 _)) ((p `plusPtr` 48 :: Ptr (Ptr (ImageBlit2 _))))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekSomeCStruct (forgetExtensions ((pRegions `advancePtrBytes` (96 * (i)) :: Ptr (ImageBlit2 _)))))
+    filter' <- peek @Filter ((p `plusPtr` 56 :: Ptr Filter))
+    pure $ BlitImageInfo2
+             srcImage srcImageLayout dstImage dstImageLayout pRegions' filter'
+
+instance Zero BlitImageInfo2 where
+  zero = BlitImageInfo2
+           zero
+           zero
+           zero
+           zero
+           mempty
+           zero
+
+
+-- | VkCopyBufferToImageInfo2 - Structure specifying parameters of a buffer
+-- to image copy command
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-04565# If the image region
+--     specified by each element of @pRegions@ does not contain
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, it /must/ be a region that is contained within
+--     the specified @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-04554# If the image
+--     region specified by each element of @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, the rotated destination region as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing>
+--     /must/ be contained within @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @dstImage@ /must/ not be a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#blocked-image blocked image>
+--
+-- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-06203# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @dstImage@ /must/ be of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-06204# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @dstImage@ /must/ not have a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-00171# @srcBuffer@ /must/ be
+--     large enough to contain all buffer locations that are accessed
+--     according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
+--     for each element of @pRegions@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-00173# The union of all
+--     source regions, and the union of all destination regions, specified
+--     by the elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-srcBuffer-00174# @srcBuffer@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImage-01997# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-srcBuffer-00176# If @srcBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImage-00177# @dstImage@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImage-00178# If @dstImage@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImage-00179# @dstImage@ /must/
+--     have a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImageLayout-00180#
+--     @dstImageLayout@ /must/ specify the layout of the image subresources
+--     of @dstImage@ specified in @pRegions@ at the time this command is
+--     executed on a 'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImageLayout-01396#
+--     @dstImageLayout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageSubresource-01701# The
+--     @imageSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageSubresource-01702# The
+--     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageOffset-01793# The @imageOffset@
+--     and @imageExtent@ members of each element of @pRegions@ /must/
+--     respect the image transfer granularity requirements of
+--     @commandBuffer@’s command pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImage-02543# @dstImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-commandBuffer-04477# If the queue
+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
+--     @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each
+--     element of @pRegions@, the @aspectMask@ member of @imageSubresource@
+--     /must/ not be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-06223# For each element of
+--     @pRegions@ not containing
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, @imageOffset.x@ and (@imageExtent.width@ +
+--     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the width of the specified @imageSubresource@
+--     of @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-06224# For each element of
+--     @pRegions@ not containing
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, @imageOffset.y@ and (@imageExtent.height@ +
+--     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the height of the specified @imageSubresource@
+--     of @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-bufferOffset-01558# If @dstImage@
+--     does not have either a depth\/stencil or a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the format’s texel block size
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-bufferOffset-01559# If @dstImage@ has
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the element size of the compatible format for the format
+--     and the @aspectMask@ of the @imageSubresource@ as defined in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-srcImage-00199# If @dstImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
+--     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
+--     @imageExtent.height@ /must/ be @1@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageOffset-00200# For each element
+--     of @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
+--     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the depth of the specified @imageSubresource@
+--     of @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-srcImage-00201# If @dstImage@ is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
+--     /must/ be @1@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-bufferRowLength-00203# If @dstImage@
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ /must/ be a
+--     multiple of the compressed texel block width
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-bufferImageHeight-00204# If
+--     @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
+--     multiple of the compressed texel block height
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageOffset-00205# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, all members of @imageOffset@ /must/
+--     be a multiple of the corresponding dimensions of the compressed
+--     texel block
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-bufferOffset-00206# If @dstImage@ is
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
+--     of the compressed texel block size in bytes
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageExtent-00207# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@imageExtent.width@
+--     + @imageOffset.x@) /must/ equal the width of the specified
+--     @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageExtent-00208# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.height@ /must/ be a
+--     multiple of the compressed texel block height or
+--     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
+--     the specified @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-imageExtent-00209# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@imageExtent.depth@
+--     + @imageOffset.z@) /must/ equal the depth of the specified
+--     @imageSubresource@ of @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-aspectMask-00211# For each element of
+--     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
+--     present in @dstImage@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-aspectMask-01560# If @dstImage@ has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @imageSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     (with
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     valid only for image formats with three planes)
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-baseArrayLayer-00213# If @dstImage@
+--     is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
+--     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be
+--     @0@ and @imageSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-04725# If @dstImage@ is not
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ multiplied by the
+--     texel block size of @dstImage@ /must/ be less than or equal to 231-1
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-04726# If @dstImage@ is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ divided by the
+--     compressed texel block width and then multiplied by the texel block
+--     size of @dstImage@ /must/ be less than or equal to 231-1
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-commandBuffer-04052# If the queue
+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
+--     @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-srcImage-04053# If @dstImage@ has a
+--     depth\/stencil format, the @bufferOffset@ member of any element of
+--     @pRegions@ /must/ be a multiple of @4@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2'
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-srcBuffer-parameter# @srcBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImage-parameter# @dstImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-dstImageLayout-parameter#
+--     @dstImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-pRegions-parameter# @pRegions@ /must/
+--     be a valid pointer to an array of @regionCount@ valid
+--     'BufferImageCopy2' structures
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-regionCount-arraylength#
+--     @regionCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkCopyBufferToImageInfo2-commonparent# Both of @dstImage@, and
+--     @srcBuffer@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy2',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyBufferToImage2',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyBufferToImage2KHR'
+data CopyBufferToImageInfo2 = CopyBufferToImageInfo2
+  { -- | @srcBuffer@ is the source buffer.
+    srcBuffer :: Buffer
+  , -- | @dstImage@ is the destination image.
+    dstImage :: Image
+  , -- | @dstImageLayout@ is the layout of the destination image subresources for
+    -- the copy.
+    dstImageLayout :: ImageLayout
+  , -- | @pRegions@ is a pointer to an array of 'BufferImageCopy2' structures
+    -- specifying the regions to copy.
+    regions :: Vector (SomeStruct BufferImageCopy2)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyBufferToImageInfo2)
+#endif
+deriving instance Show CopyBufferToImageInfo2
+
+instance ToCStruct CopyBufferToImageInfo2 where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyBufferToImageInfo2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Buffer)) (srcBuffer)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (dstImage)
+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (dstImageLayout)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @(BufferImageCopy2 _) ((Data.Vector.length (regions)) * 72)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPRegions' `plusPtr` (72 * (i)) :: Ptr (BufferImageCopy2 _))) (e) . ($ ())) (regions)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (BufferImageCopy2 _)))) (pPRegions')
+    lift $ f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct CopyBufferToImageInfo2 where
+  peekCStruct p = do
+    srcBuffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
+    dstImage <- peek @Image ((p `plusPtr` 24 :: Ptr Image))
+    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))
+    regionCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
+    pRegions <- peek @(Ptr (BufferImageCopy2 _)) ((p `plusPtr` 40 :: Ptr (Ptr (BufferImageCopy2 _))))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekSomeCStruct (forgetExtensions ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr (BufferImageCopy2 _)))))
+    pure $ CopyBufferToImageInfo2
+             srcBuffer dstImage dstImageLayout pRegions'
+
+instance Zero CopyBufferToImageInfo2 where
+  zero = CopyBufferToImageInfo2
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkCopyImageToBufferInfo2 - Structure specifying parameters of an image
+-- to buffer copy command
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-pRegions-04566# If the image region
+--     specified by each element of @pRegions@ does not contain
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, it /must/ be contained within the specified
+--     @imageSubresource@ of @srcImage@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557# If the image
+--     region specified by each element of @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, the rotated source region as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing>
+--     /must/ be contained within @srcImage@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @srcImage@ /must/ not be a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#blocked-image blocked image>
+--
+-- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-06205# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @srcImage@ /must/ be of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-06206# If any element of
+--     @pRegions@ contains
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, then @srcImage@ /must/ not have a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-pRegions-00183# @dstBuffer@ /must/ be
+--     large enough to contain all buffer locations that are accessed
+--     according to
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
+--     for each element of @pRegions@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-pRegions-00184# The union of all
+--     source regions, and the union of all destination regions, specified
+--     by the elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-00186# @srcImage@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-01998# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @srcImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-00187# If @srcImage@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-dstBuffer-00191# @dstBuffer@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-dstBuffer-00192# If @dstBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-00188# @srcImage@ /must/
+--     have a sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImageLayout-00189#
+--     @srcImageLayout@ /must/ specify the layout of the image subresources
+--     of @srcImage@ specified in @pRegions@ at the time this command is
+--     executed on a 'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImageLayout-01397#
+--     @srcImageLayout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageSubresource-01703# The
+--     @imageSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageSubresource-01704# The
+--     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageOffset-01794# The @imageOffset@
+--     and @imageExtent@ members of each element of @pRegions@ /must/
+--     respect the image transfer granularity requirements of
+--     @commandBuffer@’s command pool’s queue family, as described in
+--     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-02544# @srcImage@ /must/ not
+--     have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageOffset-00197# For each element
+--     of @pRegions@ not containing
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, @imageOffset.x@ and (@imageExtent.width@ +
+--     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the width of the specified @imageSubresource@
+--     of @srcImage@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageOffset-00198# For each element
+--     of @pRegions@ not containing
+--     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
+--     in its @pNext@ chain, @imageOffset.y@ and (@imageExtent.height@ +
+--     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the height of the specified @imageSubresource@
+--     of @srcImage@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-bufferOffset-01558# If {imageparam}
+--     does not have either a depth\/stencil or a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the format’s texel block size
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-bufferOffset-01559# If {imageparam}
+--     has a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @bufferOffset@ /must/ be a
+--     multiple of the element size of the compatible format for the format
+--     and the @aspectMask@ of the @imageSubresource@ as defined in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-00199# If {imageparam} is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
+--     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
+--     @imageExtent.height@ /must/ be @1@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageOffset-00200# For each element
+--     of @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
+--     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
+--     less than or equal to the depth of the specified @imageSubresource@
+--     of {imageparam}
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-00201# If {imageparam} is of
+--     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
+--     /must/ be @1@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-bufferRowLength-00203# If
+--     {imageparam} is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ /must/ be a
+--     multiple of the compressed texel block width
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-bufferImageHeight-00204# If
+--     {imageparam} is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
+--     multiple of the compressed texel block height
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageOffset-00205# If {imageparam} is
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, all members of @imageOffset@ /must/
+--     be a multiple of the corresponding dimensions of the compressed
+--     texel block
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-bufferOffset-00206# If {imageparam}
+--     is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
+--     of the compressed texel block size in bytes
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageExtent-00207# If {imageparam} is
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.width@ /must/ be a
+--     multiple of the compressed texel block width or (@imageExtent.width@
+--     + @imageOffset.x@) /must/ equal the width of the specified
+--     @imageSubresource@ of {imageparam}
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageExtent-00208# If {imageparam} is
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.height@ /must/ be a
+--     multiple of the compressed texel block height or
+--     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
+--     the specified @imageSubresource@ of {imageparam}
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-imageExtent-00209# If {imageparam} is
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
+--     multiple of the compressed texel block depth or (@imageExtent.depth@
+--     + @imageOffset.z@) /must/ equal the depth of the specified
+--     @imageSubresource@ of {imageparam}
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-aspectMask-00211# For each element of
+--     @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
+--     present in {imageparam}
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-aspectMask-01560# If {imageparam} has
+--     a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
+--     then for each element of @pRegions@, @imageSubresource.aspectMask@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     (with
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--     valid only for image formats with three planes)
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-baseArrayLayer-00213# If {imageparam}
+--     is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each
+--     element of @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be
+--     @0@ and @imageSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-pRegions-04725# If {imageparam} is
+--     not a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ multiplied by the
+--     texel block size of {imageparam} /must/ be less than or equal to
+--     231-1
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-pRegions-04726# If {imageparam} is a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
+--     for each element of @pRegions@, @bufferRowLength@ divided by the
+--     compressed texel block width and then multiplied by the texel block
+--     size of {imageparam} /must/ be less than or equal to 231-1
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-commandBuffer-04052# If the queue
+--     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
+--     @commandBuffer@ was allocated from does not support
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
+--     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
+--     @bufferOffset@ member of any element of @pRegions@ /must/ be a
+--     multiple of @4@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-04053# If {imageparam} has a
+--     depth\/stencil format, the @bufferOffset@ member of any element of
+--     @pRegions@ /must/ be a multiple of @4@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2'
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImage-parameter# @srcImage@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-srcImageLayout-parameter#
+--     @srcImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-dstBuffer-parameter# @dstBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-pRegions-parameter# @pRegions@ /must/
+--     be a valid pointer to an array of @regionCount@ valid
+--     'BufferImageCopy2' structures
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-regionCount-arraylength#
+--     @regionCount@ /must/ be greater than @0@
+--
+-- -   #VUID-VkCopyImageToBufferInfo2-commonparent# Both of @dstBuffer@,
+--     and @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy2',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdCopyImageToBuffer2',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdCopyImageToBuffer2KHR'
+data CopyImageToBufferInfo2 = CopyImageToBufferInfo2
+  { -- | @srcImage@ is the source image.
+    srcImage :: Image
+  , -- | @srcImageLayout@ is the layout of the source image subresources for the
+    -- copy.
+    srcImageLayout :: ImageLayout
+  , -- | @dstBuffer@ is the destination buffer.
+    dstBuffer :: Buffer
+  , -- | @pRegions@ is a pointer to an array of 'BufferImageCopy2' structures
+    -- specifying the regions to copy.
+    regions :: Vector (SomeStruct BufferImageCopy2)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CopyImageToBufferInfo2)
+#endif
+deriving instance Show CopyImageToBufferInfo2
+
+instance ToCStruct CopyImageToBufferInfo2 where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CopyImageToBufferInfo2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Buffer)) (dstBuffer)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @(BufferImageCopy2 _) ((Data.Vector.length (regions)) * 72)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPRegions' `plusPtr` (72 * (i)) :: Ptr (BufferImageCopy2 _))) (e) . ($ ())) (regions)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (BufferImageCopy2 _)))) (pPRegions')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Buffer)) (zero)
+    f
+
+instance FromCStruct CopyImageToBufferInfo2 where
+  peekCStruct p = do
+    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
+    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    dstBuffer <- peek @Buffer ((p `plusPtr` 32 :: Ptr Buffer))
+    regionCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pRegions <- peek @(Ptr (BufferImageCopy2 _)) ((p `plusPtr` 48 :: Ptr (Ptr (BufferImageCopy2 _))))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekSomeCStruct (forgetExtensions ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr (BufferImageCopy2 _)))))
+    pure $ CopyImageToBufferInfo2
+             srcImage srcImageLayout dstBuffer pRegions'
+
+instance Zero CopyImageToBufferInfo2 where
+  zero = CopyImageToBufferInfo2
+           zero
+           zero
+           zero
+           mempty
+
+
+-- | VkResolveImageInfo2 - Structure specifying parameters of resolve image
+-- command
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkResolveImageInfo2-pRegions-00255# The union of all source
+--     regions, and the union of all destination regions, specified by the
+--     elements of @pRegions@, /must/ not overlap in memory
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-00256# If @srcImage@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-00257# @srcImage@ /must/ have a
+--     sample count equal to any valid sample count value other than
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkResolveImageInfo2-dstImage-00258# If @dstImage@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkResolveImageInfo2-dstImage-00259# @dstImage@ /must/ have a
+--     sample count equal to
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImageLayout-00260# @srcImageLayout@
+--     /must/ specify the layout of the image subresources of @srcImage@
+--     specified in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImageLayout-01400# @srcImageLayout@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-VkResolveImageInfo2-dstImageLayout-00262# @dstImageLayout@
+--     /must/ specify the layout of the image subresources of @dstImage@
+--     specified in @pRegions@ at the time this command is executed on a
+--     'Vulkan.Core10.Handles.Device'
+--
+-- -   #VUID-VkResolveImageInfo2-dstImageLayout-01401# @dstImageLayout@
+--     /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- -   #VUID-VkResolveImageInfo2-dstImage-02003# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkResolveImageInfo2-linearColorAttachment-06519# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
+--     feature is enabled and the image is created with
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
+--     of @dstImage@ /must/ contain
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-01386# @srcImage@ and @dstImage@
+--     /must/ have been created with the same image format
+--
+-- -   #VUID-VkResolveImageInfo2-srcSubresource-01709# The
+--     @srcSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
+--
+-- -   #VUID-VkResolveImageInfo2-dstSubresource-01710# The
+--     @dstSubresource.mipLevel@ member of each element of @pRegions@
+--     /must/ be less than the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
+--
+-- -   #VUID-VkResolveImageInfo2-srcSubresource-01711# The
+--     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @srcImage@ was created
+--
+-- -   #VUID-VkResolveImageInfo2-dstSubresource-01712# The
+--     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
+--     each element of @pRegions@ /must/ be less than or equal to the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @dstImage@ was created
+--
+-- -   #VUID-VkResolveImageInfo2-dstImage-02546# @dstImage@ and @srcImage@
+--     /must/ not have been created with @flags@ containing
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-04446# If either @srcImage@ or
+--     @dstImage@ are of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @srcSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-04447# If either @srcImage@ or
+--     @dstImage@ are of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
+--     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
+--     @dstSubresource.layerCount@ /must/ be @1@
+--
+-- -   #VUID-VkResolveImageInfo2-srcOffset-00269# For each element of
+--     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkResolveImageInfo2-srcOffset-00270# For each element of
+--     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-00271# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-VkResolveImageInfo2-srcOffset-00272# For each element of
+--     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @srcSubresource@ of @srcImage@
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-00273# If @srcImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- -   #VUID-VkResolveImageInfo2-dstOffset-00274# For each element of
+--     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the width of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkResolveImageInfo2-dstOffset-00275# For each element of
+--     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the height of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkResolveImageInfo2-dstImage-00276# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
+--     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@
+--     /must/ be @1@
+--
+-- -   #VUID-VkResolveImageInfo2-dstOffset-00277# For each element of
+--     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
+--     /must/ both be greater than or equal to @0@ and less than or equal
+--     to the depth of the specified @dstSubresource@ of @dstImage@
+--
+-- -   #VUID-VkResolveImageInfo2-dstImage-00278# If @dstImage@ is of type
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
+--     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
+--     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
+--     be @1@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkResolveImageInfo2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2'
+--
+-- -   #VUID-VkResolveImageInfo2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkResolveImageInfo2-srcImage-parameter# @srcImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkResolveImageInfo2-srcImageLayout-parameter# @srcImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-VkResolveImageInfo2-dstImage-parameter# @dstImage@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkResolveImageInfo2-dstImageLayout-parameter# @dstImageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-VkResolveImageInfo2-pRegions-parameter# @pRegions@ /must/ be a
+--     valid pointer to an array of @regionCount@ valid 'ImageResolve2'
+--     structures
+--
+-- -   #VUID-VkResolveImageInfo2-regionCount-arraylength# @regionCount@
+--     /must/ be greater than @0@
+--
+-- -   #VUID-VkResolveImageInfo2-commonparent# Both of @dstImage@, and
+--     @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageResolve2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdResolveImage2',
+-- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdResolveImage2KHR'
+data ResolveImageInfo2 = ResolveImageInfo2
+  { -- | @srcImage@ is the source image.
+    srcImage :: Image
+  , -- | @srcImageLayout@ is the layout of the source image subresources for the
+    -- resolve.
+    srcImageLayout :: ImageLayout
+  , -- | @dstImage@ is the destination image.
+    dstImage :: Image
+  , -- | @dstImageLayout@ is the layout of the destination image subresources for
+    -- the resolve.
+    dstImageLayout :: ImageLayout
+  , -- | @pRegions@ is a pointer to an array of 'ImageResolve2' structures
+    -- specifying the regions to resolve.
+    regions :: Vector ImageResolve2
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ResolveImageInfo2)
+#endif
+deriving instance Show ResolveImageInfo2
+
+instance ToCStruct ResolveImageInfo2 where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ResolveImageInfo2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
+    lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (dstImage)
+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
+    pPRegions' <- ContT $ allocaBytes @ImageResolve2 ((Data.Vector.length (regions)) * 88)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageResolve2) (e)) (regions)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageResolve2))) (pPRegions')
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Image)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct ResolveImageInfo2 where
+  peekCStruct p = do
+    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
+    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    dstImage <- peek @Image ((p `plusPtr` 32 :: Ptr Image))
+    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 40 :: Ptr ImageLayout))
+    regionCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
+    pRegions <- peek @(Ptr ImageResolve2) ((p `plusPtr` 48 :: Ptr (Ptr ImageResolve2)))
+    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageResolve2 ((pRegions `advancePtrBytes` (88 * (i)) :: Ptr ImageResolve2)))
+    pure $ ResolveImageInfo2
+             srcImage srcImageLayout dstImage dstImageLayout pRegions'
+
+instance Zero ResolveImageInfo2 where
+  zero = ResolveImageInfo2
+           zero
+           zero
+           zero
+           zero
+           mempty
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_copy_commands2.hs-boot
@@ -0,0 +1,111 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_copy_commands2"
+module Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2  ( BlitImageInfo2
+                                                          , BufferCopy2
+                                                          , BufferImageCopy2
+                                                          , CopyBufferInfo2
+                                                          , CopyBufferToImageInfo2
+                                                          , CopyImageInfo2
+                                                          , CopyImageToBufferInfo2
+                                                          , ImageBlit2
+                                                          , ImageCopy2
+                                                          , ImageResolve2
+                                                          , ResolveImageInfo2
+                                                          ) 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 BlitImageInfo2
+
+instance ToCStruct BlitImageInfo2
+instance Show BlitImageInfo2
+
+instance FromCStruct BlitImageInfo2
+
+
+data BufferCopy2
+
+instance ToCStruct BufferCopy2
+instance Show BufferCopy2
+
+instance FromCStruct BufferCopy2
+
+
+type role BufferImageCopy2 nominal
+data BufferImageCopy2 (es :: [Type])
+
+instance (Extendss BufferImageCopy2 es, PokeChain es) => ToCStruct (BufferImageCopy2 es)
+instance Show (Chain es) => Show (BufferImageCopy2 es)
+
+instance (Extendss BufferImageCopy2 es, PeekChain es) => FromCStruct (BufferImageCopy2 es)
+
+
+data CopyBufferInfo2
+
+instance ToCStruct CopyBufferInfo2
+instance Show CopyBufferInfo2
+
+instance FromCStruct CopyBufferInfo2
+
+
+data CopyBufferToImageInfo2
+
+instance ToCStruct CopyBufferToImageInfo2
+instance Show CopyBufferToImageInfo2
+
+instance FromCStruct CopyBufferToImageInfo2
+
+
+data CopyImageInfo2
+
+instance ToCStruct CopyImageInfo2
+instance Show CopyImageInfo2
+
+instance FromCStruct CopyImageInfo2
+
+
+data CopyImageToBufferInfo2
+
+instance ToCStruct CopyImageToBufferInfo2
+instance Show CopyImageToBufferInfo2
+
+instance FromCStruct CopyImageToBufferInfo2
+
+
+type role ImageBlit2 nominal
+data ImageBlit2 (es :: [Type])
+
+instance (Extendss ImageBlit2 es, PokeChain es) => ToCStruct (ImageBlit2 es)
+instance Show (Chain es) => Show (ImageBlit2 es)
+
+instance (Extendss ImageBlit2 es, PeekChain es) => FromCStruct (ImageBlit2 es)
+
+
+data ImageCopy2
+
+instance ToCStruct ImageCopy2
+instance Show ImageCopy2
+
+instance FromCStruct ImageCopy2
+
+
+data ImageResolve2
+
+instance ToCStruct ImageResolve2
+instance Show ImageResolve2
+
+instance FromCStruct ImageResolve2
+
+
+data ResolveImageInfo2
+
+instance ToCStruct ResolveImageInfo2
+instance Show ResolveImageInfo2
+
+instance FromCStruct ResolveImageInfo2
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs
@@ -0,0 +1,1524 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_dynamic_rendering"
+module Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering  ( cmdBeginRendering
+                                                             , cmdUseRendering
+                                                             , cmdEndRendering
+                                                             , PipelineRenderingCreateInfo(..)
+                                                             , RenderingInfo(..)
+                                                             , RenderingAttachmentInfo(..)
+                                                             , PhysicalDeviceDynamicRenderingFeatures(..)
+                                                             , CommandBufferInheritanceRenderingInfo(..)
+                                                             , AttachmentStoreOp(..)
+                                                             , StructureType(..)
+                                                             , RenderingFlagBits(..)
+                                                             , RenderingFlags
+                                                             ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp)
+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.CStruct.Extends (Chain)
+import Vulkan.Core10.CommandBufferBuilding (ClearValue)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginRendering))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdEndRendering))
+import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.Enums.Format (Format)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.Handles (ImageView)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (MultiviewPerViewAttributesInfoNVX)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.FundamentalTypes (Rect2D)
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingFragmentDensityMapAttachmentInfoEXT)
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingFragmentShadingRateAttachmentInfoKHR)
+import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INFO))
+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(..))
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlagBits(..))
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdBeginRendering
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfo) -> IO ()
+
+-- | vkCmdBeginRendering - Begin a dynamic render pass instance
+--
+-- = Description
+--
+-- After beginning a render pass instance, the command buffer is ready to
+-- record
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing draw commands>.
+--
+-- If @pRenderingInfo->flags@ includes
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_RESUMING_BIT' then this
+-- render pass is resumed from a render pass instance that has been
+-- suspended earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdBeginRendering-dynamicRendering-06446# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdBeginRendering-commandBuffer-06068# If @commandBuffer@ is
+--     a secondary command buffer, @pRenderingInfo->flags@ /must/ not
+--     include
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdBeginRendering-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdBeginRendering-pRenderingInfo-parameter# @pRenderingInfo@
+--     /must/ be a valid pointer to a valid 'RenderingInfo' structure
+--
+-- -   #VUID-vkCmdBeginRendering-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-vkCmdBeginRendering-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdBeginRendering-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderingInfo'
+cmdBeginRendering :: forall a io
+                   . (Extendss RenderingInfo a, PokeChain a, MonadIO io)
+                  => -- | @commandBuffer@ is the command buffer in which to record the command.
+                     CommandBuffer
+                  -> -- | @pRenderingInfo@ is a pointer to a 'RenderingInfo' structure specifying
+                     -- details of the render pass instance to begin.
+                     (RenderingInfo a)
+                  -> io ()
+cmdBeginRendering commandBuffer renderingInfo = liftIO . evalContT $ do
+  let vkCmdBeginRenderingPtr = pVkCmdBeginRendering (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdBeginRenderingPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginRendering is null" Nothing Nothing
+  let vkCmdBeginRendering' = mkVkCmdBeginRendering vkCmdBeginRenderingPtr
+  pRenderingInfo <- ContT $ withCStruct (renderingInfo)
+  lift $ traceAroundEvent "vkCmdBeginRendering" (vkCmdBeginRendering' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderingInfo))
+  pure $ ()
+
+-- | This function will call the supplied action between calls to
+-- 'cmdBeginRendering' and 'cmdEndRendering'
+--
+-- Note that 'cmdEndRendering' is *not* called if an exception is thrown by
+-- the inner action.
+cmdUseRendering :: forall a io r . (Extendss RenderingInfo a, PokeChain a, MonadIO io) => CommandBuffer -> RenderingInfo a -> io r -> io r
+cmdUseRendering commandBuffer pRenderingInfo a =
+  (cmdBeginRendering commandBuffer pRenderingInfo) *> a <* (cmdEndRendering commandBuffer)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdEndRendering
+  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()
+
+-- | vkCmdEndRendering - End a dynamic render pass instance
+--
+-- = Description
+--
+-- If the value of @pRenderingInfo->flags@ used to begin this render pass
+-- instance included
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_SUSPENDING_BIT', then
+-- this render pass is suspended and will be resumed later in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdEndRendering-None-06161# The current render pass instance
+--     /must/ have been begun with 'cmdBeginRendering'
+--
+-- -   #VUID-vkCmdEndRendering-commandBuffer-06162# The current render pass
+--     instance /must/ have been begun in @commandBuffer@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdEndRendering-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdEndRendering-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-vkCmdEndRendering-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics operations
+--
+-- -   #VUID-vkCmdEndRendering-renderpass# This command /must/ only be
+--     called inside of a render pass instance
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer'
+cmdEndRendering :: forall io
+                 . (MonadIO io)
+                => -- | @commandBuffer@ is the command buffer in which to record the command.
+                   CommandBuffer
+                -> io ()
+cmdEndRendering commandBuffer = liftIO $ do
+  let vkCmdEndRenderingPtr = pVkCmdEndRendering (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdEndRenderingPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRendering is null" Nothing Nothing
+  let vkCmdEndRendering' = mkVkCmdEndRendering vkCmdEndRenderingPtr
+  traceAroundEvent "vkCmdEndRendering" (vkCmdEndRendering' (commandBufferHandle (commandBuffer)))
+  pure $ ()
+
+
+-- | VkPipelineRenderingCreateInfo - Structure specifying attachment formats
+--
+-- = Description
+--
+-- When a pipeline is created without a 'Vulkan.Core10.Handles.RenderPass',
+-- if this structure is present in the @pNext@ chain of
+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it specifies the
+-- view mask and format of attachments used for rendering. If this
+-- structure is not specified, and the pipeline does not include a
+-- 'Vulkan.Core10.Handles.RenderPass', @viewMask@ and
+-- @colorAttachmentCount@ are @0@, and @depthAttachmentFormat@ and
+-- @stencilAttachmentFormat@ are
+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'. If a graphics pipeline is
+-- created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters of
+-- this structure are ignored.
+--
+-- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of
+-- @pColorAttachmentFormats@ is
+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the
+-- corresponding attachment is unused within the render pass. Valid formats
+-- indicate that an attachment /can/ be used - but it is still valid to set
+-- the attachment to @NULL@ when beginning rendering.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkPipelineRenderingCreateInfoKHR-pColorAttachmentFormats-06495#
+--     If any element of @pColorAttachmentFormats@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     that includes either
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-depthAttachmentFormat-06065# If
+--     @depthAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-stencilAttachmentFormat-06164#
+--     If @stencilAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-depthAttachmentFormat-06165# If
+--     @depthAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and
+--     @stencilAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
+--     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-multiview-06066# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     feature is not enabled, @viewMask@ /must/ be @0@
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-viewMask-06067# The index of the
+--     most significant bit in @viewMask@ /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO'
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-pColorAttachmentFormats-parameter#
+--     If @colorAttachmentCount@ is not @0@, @pColorAttachmentFormats@
+--     /must/ be a valid pointer to an array of @colorAttachmentCount@
+--     valid 'Vulkan.Core10.Enums.Format.Format' values
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-depthAttachmentFormat-parameter#
+--     @depthAttachmentFormat@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkPipelineRenderingCreateInfo-stencilAttachmentFormat-parameter#
+--     @stencilAttachmentFormat@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Format.Format' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PipelineRenderingCreateInfo = PipelineRenderingCreateInfo
+  { -- | @viewMask@ is the viewMask used for rendering.
+    viewMask :: Word32
+  , -- | @pColorAttachmentFormats@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color
+    -- attachments used in this pipeline.
+    colorAttachmentFormats :: Vector Format
+  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the depth attachment used in this pipeline.
+    depthAttachmentFormat :: Format
+  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the stencil attachment used in this pipeline.
+    stencilAttachmentFormat :: Format
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PipelineRenderingCreateInfo)
+#endif
+deriving instance Show PipelineRenderingCreateInfo
+
+instance ToCStruct PipelineRenderingCreateInfo where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PipelineRenderingCreateInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (viewMask)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentFormats)) :: Word32))
+    pPColorAttachmentFormats' <- ContT $ allocaBytes @Format ((Data.Vector.length (colorAttachmentFormats)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (colorAttachmentFormats)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Format))) (pPColorAttachmentFormats')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Format)) (depthAttachmentFormat)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (stencilAttachmentFormat)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 36 :: Ptr Format)) (zero)
+    f
+
+instance FromCStruct PipelineRenderingCreateInfo where
+  peekCStruct p = do
+    viewMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 24 :: Ptr (Ptr Format)))
+    pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Format ((pColorAttachmentFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))
+    depthAttachmentFormat <- peek @Format ((p `plusPtr` 32 :: Ptr Format))
+    stencilAttachmentFormat <- peek @Format ((p `plusPtr` 36 :: Ptr Format))
+    pure $ PipelineRenderingCreateInfo
+             viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat
+
+instance Zero PipelineRenderingCreateInfo where
+  zero = PipelineRenderingCreateInfo
+           zero
+           mempty
+           zero
+           zero
+
+
+-- | VkRenderingInfo - Structure specifying render pass instance begin info
+--
+-- = Description
+--
+-- If @viewMask@ is not @0@, multiview is enabled.
+--
+-- If there is an instance of
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+-- included in the @pNext@ chain and its @deviceCount@ member is not @0@,
+-- then @renderArea@ is ignored, and the render area is defined per-device
+-- by that structure.
+--
+-- Each element of the @pColorAttachments@ array corresponds to an output
+-- location in the shader, i.e. if the shader declares an output variable
+-- decorated with a @Location@ value of __X__, then it uses the attachment
+-- provided in @pColorAttachments@[__X__]. If the @imageView@ member of any
+-- element of @pColorAttachments@ is
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', writes to the corresponding
+-- location by a fragment are discarded.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderingInfo-viewMask-06069# If @viewMask@ is @0@,
+--     @layerCount@ /must/ not be @0@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06070# If neither the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
+--     nor the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
+--     extensions are enabled, @imageView@ members of @pDepthAttachment@,
+--     @pStencilAttachment@, and elements of @pColorAttachments@ that are
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been
+--     created with the same @sampleCount@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06077# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0,
+--     @renderArea.offset.x@ /must/ be greater than or equal to 0
+--
+-- -   #VUID-VkRenderingInfo-pNext-06078# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0,
+--     @renderArea.offset.y@ /must/ be greater than or equal to 0
+--
+-- -   #VUID-VkRenderingInfo-pNext-06079# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0, the width of
+--     the @imageView@ member of any element of @pColorAttachments@,
+--     @pDepthAttachment@, or @pStencilAttachment@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or
+--     equal to @renderArea.offset.x@ + @renderArea.extent.width@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06080# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0, the height of
+--     the @imageView@ member of any element of @pColorAttachments@,
+--     @pDepthAttachment@, or @pStencilAttachment@ that is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or
+--     equal to @renderArea.offset.y@ + @renderArea.extent.height@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06083# If the @pNext@ chain contains
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
+--     the width of the @imageView@ member of any element of
+--     @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@
+--     that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be
+--     greater than or equal to the sum of the @offset.x@ and
+--     @extent.width@ members of each element of @pDeviceRenderAreas@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06084# If the @pNext@ chain contains
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
+--     the height of the @imageView@ member of any element of
+--     @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@
+--     that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be
+--     greater than or equal to the sum of the @offset.y@ and
+--     @extent.height@ members of each element of @pDeviceRenderAreas@
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06085# If neither
+--     @pDepthAttachment@ or @pStencilAttachment@ are @NULL@ and the
+--     @imageView@ member of either structure is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @imageView@ member of
+--     each structure /must/ be the same
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06086# If neither
+--     @pDepthAttachment@ or @pStencilAttachment@ are @NULL@, and the
+--     @resolveMode@ member of each is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the
+--     @resolveImageView@ member of each structure /must/ be the same
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06087# If
+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
+--     element of @pColorAttachments@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', that @imageView@ /must/
+--     have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06088# If @pDepthAttachment@
+--     is not @NULL@ and @pDepthAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pDepthAttachment->imageView@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkRenderingInfo-pStencilAttachment-06089# If
+--     @pStencilAttachment@ is not @NULL@ and
+--     @pStencilAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pStencilAttachment->imageView@ /must/ have been created with a
+--     stencil usage including
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06090# If
+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
+--     element of @pColorAttachments@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of
+--     that element of @pColorAttachments@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06091# If
+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
+--     element of @pColorAttachments@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@
+--     member of that element of @pColorAttachments@ is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its
+--     @resolveImageLayout@ member /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06092# If @pDepthAttachment@
+--     is not @NULL@ and @pDepthAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @pDepthAttachment->layout@
+--     /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06093# If @pDepthAttachment@
+--     is not @NULL@, @pDepthAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     @pDepthAttachment->resolveMode@ is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @pDepthAttachment->resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-pStencilAttachment-06094# If
+--     @pStencilAttachment@ is not @NULL@ and
+--     @pStencilAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pStencilAttachment->layout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-pStencilAttachment-06095# If
+--     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     @pStencilAttachment->resolveMode@ is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @pStencilAttachment->resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06096# If
+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
+--     element of @pColorAttachments@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of
+--     that element of @pColorAttachments@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06097# If
+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
+--     element of @pColorAttachments@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@
+--     member of that element of @pColorAttachments@ is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its
+--     @resolveImageLayout@ member /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06098# If @pDepthAttachment@
+--     is not @NULL@, @pDepthAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     @pDepthAttachment->resolveMode@ is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @pDepthAttachment->resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-pStencilAttachment-06099# If
+--     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     @pStencilAttachment->resolveMode@ is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @pStencilAttachment->resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06100# If
+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
+--     element of @pColorAttachments@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of
+--     that element of @pColorAttachments@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06101# If
+--     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
+--     element of @pColorAttachments@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@
+--     member of that element of @pColorAttachments@ is not
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its
+--     @resolveImageLayout@ member /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06102# If @pDepthAttachment@
+--     is not @NULL@ and @pDepthAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pDepthAttachment->resolveMode@ /must/ be one of the bits set in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedDepthResolveModes@
+--
+-- -   #VUID-VkRenderingInfo-pStencilAttachment-06103# If
+--     @pStencilAttachment@ is not @NULL@ and
+--     @pStencilAttachment->imageView@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @pStencilAttachment->resolveMode@ /must/ be one of the bits set in
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedStencilResolveModes@
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06104# If @pDepthAttachment@
+--     or @pStencilAttachment@ are both not @NULL@,
+--     @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@
+--     are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', the @resolveMode@ of both
+--     structures /must/ be the same value
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-06105# If @pDepthAttachment@
+--     or @pStencilAttachment@ are both not @NULL@,
+--     @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@
+--     are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@
+--     is 'Vulkan.Core10.FundamentalTypes.FALSE', and the @resolveMode@ of
+--     neither structure is
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the
+--     @resolveMode@ of both structures /must/ be the same value
+--
+-- -   #VUID-VkRenderingInfo-colorAttachmentCount-06106#
+--     @colorAttachmentCount@ /must/ be less than or equal to
+--     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06107# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages non-subsample image feature>
+--     is not enabled, valid @imageView@ and @resolveImageView@ members of
+--     @pDepthAttachment@, @pStencilAttachment@, and each element of
+--     @pColorAttachments@ /must/ be a 'Vulkan.Core10.Handles.ImageView'
+--     created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- -   #VUID-VkRenderingInfo-imageView-06108# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@,
+--     @imageView@ /must/ have a @layerCount@ greater than or equal to the
+--     index of the most significant bit in @viewMask@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06109# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@,
+--     @imageView@ /must/ have a @layerCount@ equal to @1@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06112# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0 and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     width greater than or equal to
+--     \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\)
+--
+-- -   #VUID-VkRenderingInfo-pNext-06113# If the @pNext@ chain contains a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     structure, its @deviceRenderAreaCount@ member is not 0, and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     width greater than or equal to
+--     \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\)
+--     for each element of @pDeviceRenderAreas@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06114# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0 and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     height greater than or equal to
+--     \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\)
+--
+-- -   #VUID-VkRenderingInfo-pNext-06115# If the @pNext@ chain contains a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     structure, its @deviceRenderAreaCount@ member is not 0, and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     height greater than or equal to
+--     \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\)
+--     for each element of @pDeviceRenderAreas@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06116# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to
+--     the @imageView@ or @resolveImageView@ member of @pDepthAttachment@,
+--     @pStencilAttachment@, or any element of @pColorAttachments@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06119# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0 and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     width greater than or equal to
+--     \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\)
+--
+-- -   #VUID-VkRenderingInfo-pNext-06120# If the @pNext@ chain contains a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     structure, its @deviceRenderAreaCount@ member is not 0, and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     width greater than or equal to
+--     \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\)
+--     for each element of @pDeviceRenderAreas@
+--
+-- -   #VUID-VkRenderingInfo-pNext-06121# If the @pNext@ chain does not
+--     contain
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     or its @deviceRenderAreaCount@ member is equal to 0 and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     height greater than or equal to
+--     \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)
+--
+-- -   #VUID-VkRenderingInfo-pNext-06122# If the @pNext@ chain contains a
+--     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
+--     structure, its @deviceRenderAreaCount@ member is not 0, and the
+--     @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
+--     height greater than or equal to
+--     \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)
+--     for each element of @pDeviceRenderAreas@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06123# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@,
+--     @imageView@ /must/ have a @layerCount@ that is either equal to @1@
+--     or greater than or equal to @layerCount@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06124# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@,
+--     @imageView@ /must/ have a @layerCount@ that either equal to @1@ or
+--     greater than or equal to the index of the most significant bit in
+--     @viewMask@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06125# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to
+--     the @imageView@ or @resolveImageView@ member of @pDepthAttachment@,
+--     @pStencilAttachment@, or any element of @pColorAttachments@
+--
+-- -   #VUID-VkRenderingInfo-imageView-06126# If the @imageView@ member of
+--     a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--     structure included in the @pNext@ chain is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to
+--     the @imageView@ member of a
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'
+--     structure included in the @pNext@ chain
+--
+-- -   #VUID-VkRenderingInfo-multiview-06127# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     feature is not enabled, @viewMask@ /must/ be @0@
+--
+-- -   #VUID-VkRenderingInfo-viewMask-06128# The index of the most
+--     significant bit in @viewMask@ /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO'
+--
+-- -   #VUID-VkRenderingInfo-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.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.MultiviewPerViewAttributesInfoNVX',
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT',
+--     or
+--     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'
+--
+-- -   #VUID-VkRenderingInfo-sType-unique# The @sType@ value of each struct
+--     in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkRenderingInfo-flags-parameter# @flags@ /must/ be a valid
+--     combination of
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits' values
+--
+-- -   #VUID-VkRenderingInfo-pColorAttachments-parameter# If
+--     @colorAttachmentCount@ is not @0@, @pColorAttachments@ /must/ be a
+--     valid pointer to an array of @colorAttachmentCount@ valid
+--     'RenderingAttachmentInfo' structures
+--
+-- -   #VUID-VkRenderingInfo-pDepthAttachment-parameter# If
+--     @pDepthAttachment@ is not @NULL@, @pDepthAttachment@ /must/ be a
+--     valid pointer to a valid 'RenderingAttachmentInfo' structure
+--
+-- -   #VUID-VkRenderingInfo-pStencilAttachment-parameter# If
+--     @pStencilAttachment@ is not @NULL@, @pStencilAttachment@ /must/ be a
+--     valid pointer to a valid 'RenderingAttachmentInfo' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'RenderingAttachmentInfo',
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlags',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBeginRendering',
+-- 'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+data RenderingInfo (es :: [Type]) = RenderingInfo
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits'.
+    flags :: RenderingFlags
+  , -- | @renderArea@ is the render area that is affected by the render pass
+    -- instance.
+    renderArea :: Rect2D
+  , -- | @layerCount@ is the number of layers rendered to in each attachment when
+    -- @viewMask@ is @0@.
+    layerCount :: Word32
+  , -- | @viewMask@ is the view mask indicating the indices of attachment layers
+    -- that will be rendered when it is not @0@.
+    viewMask :: Word32
+  , -- | @pColorAttachments@ is a pointer to an array of @colorAttachmentCount@
+    -- 'RenderingAttachmentInfo' structures describing any color attachments
+    -- used.
+    colorAttachments :: Vector RenderingAttachmentInfo
+  , -- | @pDepthAttachment@ is a pointer to a 'RenderingAttachmentInfo' structure
+    -- describing a depth attachment.
+    depthAttachment :: Maybe RenderingAttachmentInfo
+  , -- | @pStencilAttachment@ is a pointer to a 'RenderingAttachmentInfo'
+    -- structure describing a stencil attachment.
+    stencilAttachment :: Maybe RenderingAttachmentInfo
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingInfo (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (RenderingInfo es)
+
+instance Extensible RenderingInfo where
+  extensibleTypeName = "RenderingInfo"
+  setNext RenderingInfo{..} next' = RenderingInfo{next = next', ..}
+  getNext RenderingInfo{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingInfo e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
+    | Just Refl <- eqT @e @RenderingFragmentDensityMapAttachmentInfoEXT = Just f
+    | Just Refl <- eqT @e @RenderingFragmentShadingRateAttachmentInfoKHR = Just f
+    | Just Refl <- eqT @e @DeviceGroupRenderPassBeginInfo = Just f
+    | otherwise = Nothing
+
+instance (Extendss RenderingInfo es, PokeChain es) => ToCStruct (RenderingInfo es) where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INFO)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr RenderingFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (renderArea)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (layerCount)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (viewMask)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachments)) :: Word32))
+    pPColorAttachments' <- ContT $ allocaBytes @RenderingAttachmentInfo ((Data.Vector.length (colorAttachments)) * 72)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (72 * (i)) :: Ptr RenderingAttachmentInfo) (e) . ($ ())) (colorAttachments)
+    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr RenderingAttachmentInfo))) (pPColorAttachments')
+    pDepthAttachment'' <- case (depthAttachment) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr RenderingAttachmentInfo))) pDepthAttachment''
+    pStencilAttachment'' <- case (stencilAttachment) of
+      Nothing -> pure nullPtr
+      Just j -> ContT $ withCStruct (j)
+    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr RenderingAttachmentInfo))) pStencilAttachment''
+    lift $ f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INFO)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (zero)
+    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    lift $ f
+
+instance es ~ '[] => Zero (RenderingInfo es) where
+  zero = RenderingInfo
+           ()
+           zero
+           zero
+           zero
+           zero
+           mempty
+           Nothing
+           Nothing
+
+
+-- | VkRenderingAttachmentInfo - Structure specifying attachment information
+--
+-- = Description
+--
+-- Values in @imageView@ are loaded and stored according to the values of
+-- @loadOp@ and @storeOp@, within the render area for each device specified
+-- in 'RenderingInfo'. If @imageView@ is
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE', other members of this
+-- structure are ignored; writes to this attachment will be discarded, and
+-- no load, store, or resolve operations will be performed.
+--
+-- If @resolveMode@ is
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', then
+-- @resolveImageView@ is ignored. If @resolveMode@ is not
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', values in
+-- @resolveImageView@ within the render area become undefined once
+-- rendering begins. At the end of rendering, the color values written to
+-- each pixel location in @imageView@ will be resolved according to
+-- @resolveMode@ and stored into the the same location in
+-- @resolveImageView@.
+--
+-- Note
+--
+-- The resolve mode and store operation are independent; it is valid to
+-- write both resolved and unresolved values, and equally valid to discard
+-- the unresolved values while writing the resolved ones.
+--
+-- Store and resolve operations are only performed at the end of a render
+-- pass instance that does not specify the
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_SUSPENDING_BIT_KHR'
+-- flag.
+--
+-- Load operations are only performed at the beginning of a render pass
+-- instance that does not specify the
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RENDERING_RESUMING_BIT_KHR' flag.
+--
+-- Image contents at the end of a suspended render pass instance remain
+-- defined for access by a resuming render pass instance.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06129# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has a non-integer
+--     color format, @resolveMode@ /must/ be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06130# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has an integer
+--     color format, @resolveMode@ /must/ be
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06132# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @imageView@ /must/ not have a sample count of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06133# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageView@ /must/ have a sample count of
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06134# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @imageView@ and @resolveImageView@ /must/ have the same
+--     'Vulkan.Core10.Enums.Format.Format'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06135# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06136# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
+--     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06137# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
+--     or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06138# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not be
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06139# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageLayout@ /must/ not be
+--     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06140# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06141# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06142# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageLayout@ /must/ not be
+--     'Vulkan.Extensions.VK_KHR_synchronization2.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06143# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06144# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06145# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-06146# If @imageView@ is
+--     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
+--     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
+--     @resolveImageLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingAttachmentInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO'
+--
+-- -   #VUID-VkRenderingAttachmentInfo-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageView-parameter# If @imageView@
+--     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/
+--     be a valid 'Vulkan.Core10.Handles.ImageView' handle
+--
+-- -   #VUID-VkRenderingAttachmentInfo-imageLayout-parameter# @imageLayout@
+--     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
+--     value
+--
+-- -   #VUID-VkRenderingAttachmentInfo-resolveMode-parameter# If
+--     @resolveMode@ is not @0@, @resolveMode@ /must/ be a valid
+--     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
+--
+-- -   #VUID-VkRenderingAttachmentInfo-resolveImageView-parameter# If
+--     @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @resolveImageView@ /must/ be a valid
+--     'Vulkan.Core10.Handles.ImageView' handle
+--
+-- -   #VUID-VkRenderingAttachmentInfo-resolveImageLayout-parameter#
+--     @resolveImageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkRenderingAttachmentInfo-loadOp-parameter# @loadOp@ /must/ be
+--     a valid 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'
+--     value
+--
+-- -   #VUID-VkRenderingAttachmentInfo-storeOp-parameter# @storeOp@ /must/
+--     be a valid 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'
+--     value
+--
+-- -   #VUID-VkRenderingAttachmentInfo-clearValue-parameter# @clearValue@
+--     /must/ be a valid 'Vulkan.Core10.CommandBufferBuilding.ClearValue'
+--     union
+--
+-- -   #VUID-VkRenderingAttachmentInfo-commonparent# Both of @imageView@,
+--     and @resolveImageView@ 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_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp',
+-- 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp',
+-- 'Vulkan.Core10.CommandBufferBuilding.ClearValue',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Handles.ImageView', 'RenderingInfo',
+-- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RenderingAttachmentInfo = RenderingAttachmentInfo
+  { -- | @imageView@ is the image view that will be used for rendering.
+    imageView :: ImageView
+  , -- | @imageLayout@ is the layout that @imageView@ will be in during
+    -- rendering.
+    imageLayout :: ImageLayout
+  , -- | @resolveMode@ is a
+    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
+    -- defining how multisampled data written to @imageView@ will be resolved.
+    resolveMode :: ResolveModeFlagBits
+  , -- | @resolveImageView@ is an image view used to write resolved multisample
+    -- data at the end of rendering.
+    resolveImageView :: ImageView
+  , -- | @resolveImageLayout@ is the layout that @resolveImageView@ will be in
+    -- during rendering.
+    resolveImageLayout :: ImageLayout
+  , -- | @loadOp@ is a 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'
+    -- value specifying how the contents of @imageView@ are treated at the
+    -- start of the render pass instance.
+    loadOp :: AttachmentLoadOp
+  , -- | @storeOp@ is a 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'
+    -- value specifying how the contents of @imageView@ are treated at the end
+    -- of the render pass instance.
+    storeOp :: AttachmentStoreOp
+  , -- | @clearValue@ is a 'Vulkan.Core10.CommandBufferBuilding.ClearValue'
+    -- structure defining values used to clear @imageView@ when @loadOp@ is
+    -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'.
+    clearValue :: ClearValue
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingAttachmentInfo)
+#endif
+deriving instance Show RenderingAttachmentInfo
+
+instance ToCStruct RenderingAttachmentInfo where
+  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingAttachmentInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)
+    lift $ poke ((p `plusPtr` 28 :: Ptr ResolveModeFlagBits)) (resolveMode)
+    lift $ poke ((p `plusPtr` 32 :: Ptr ImageView)) (resolveImageView)
+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (resolveImageLayout)
+    lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (loadOp)
+    lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (storeOp)
+    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (clearValue) . ($ ())
+    lift $ f
+  cStructSize = 72
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
+    lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (zero)
+    lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (zero)
+    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (zero) . ($ ())
+    lift $ f
+
+instance Zero RenderingAttachmentInfo where
+  zero = RenderingAttachmentInfo
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkPhysicalDeviceDynamicRenderingFeatures - Structure indicating support
+-- for dynamic render pass instances
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceDynamicRenderingFeatures' structure
+-- describe the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceDynamicRenderingFeatures' 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. 'PhysicalDeviceDynamicRenderingFeatures' /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_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceDynamicRenderingFeatures = PhysicalDeviceDynamicRenderingFeatures
+  { -- | #extension-features-dynamicRendering# @dynamicRendering@ specifies that
+    -- the implementation supports dynamic render pass instances using the
+    -- 'cmdBeginRendering' command.
+    dynamicRendering :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceDynamicRenderingFeatures)
+#endif
+deriving instance Show PhysicalDeviceDynamicRenderingFeatures
+
+instance ToCStruct PhysicalDeviceDynamicRenderingFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceDynamicRenderingFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dynamicRendering))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceDynamicRenderingFeatures where
+  peekCStruct p = do
+    dynamicRendering <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceDynamicRenderingFeatures
+             (bool32ToBool dynamicRendering)
+
+instance Storable PhysicalDeviceDynamicRenderingFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceDynamicRenderingFeatures where
+  zero = PhysicalDeviceDynamicRenderingFeatures
+           zero
+
+
+-- | VkCommandBufferInheritanceRenderingInfo - Structure specifying command
+-- buffer inheritance info for dynamic render pass instances
+--
+-- = Description
+--
+-- If the @pNext@ chain of
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes a
+-- 'CommandBufferInheritanceRenderingInfo' structure, then that structure
+-- controls parameters of dynamic render pass instances that the
+-- 'Vulkan.Core10.Handles.CommandBuffer' /can/ be executed within. If
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
+-- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', or
+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+-- is not specified in
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@,
+-- parameters of this structure are ignored.
+--
+-- If @colorAttachmentCount@ is @0@ and the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
+-- feature is enabled, @rasterizationSamples@ is ignored.
+--
+-- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of
+-- @pColorAttachmentFormats@ is
+-- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the
+-- corresponding attachment is unused within the render pass.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-colorAttachmentCount-06004#
+--     If @colorAttachmentCount@ is not @0@, @rasterizationSamples@ /must/
+--     be a valid
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-variableMultisampleRate-06005#
+--     If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
+--     feature is not enabled, @rasterizationSamples@ /must/ be a valid
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-06006#
+--     If any element of @pColorAttachmentFormats@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06007#
+--     If @depthAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-06492#
+--     When rendering to a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color attachment>,
+--     if any element of @pColorAttachmentFormats@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06199#
+--     If @stencilAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
+--     with
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#potential-format-features potential format features>
+--     that include
+--     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06200#
+--     If @depthAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and
+--     @stencilAttachmentFormat@ is not
+--     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
+--     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-multiview-06008# If
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
+--     feature is not enabled, @viewMask@ /must/ be @0@
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-viewMask-06009# The
+--     index of the most significant bit in @viewMask@ /must/ be less than
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO'
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-flags-parameter#
+--     @flags@ /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits' values
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-parameter#
+--     If @colorAttachmentCount@ is not @0@, @pColorAttachmentFormats@
+--     /must/ be a valid pointer to an array of @colorAttachmentCount@
+--     valid 'Vulkan.Core10.Enums.Format.Format' values
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-parameter#
+--     @depthAttachmentFormat@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-parameter#
+--     @stencilAttachmentFormat@ /must/ be a valid
+--     'Vulkan.Core10.Enums.Format.Format' value
+--
+-- -   #VUID-VkCommandBufferInheritanceRenderingInfo-rasterizationSamples-parameter#
+--     If @rasterizationSamples@ is not @0@, @rasterizationSamples@ /must/
+--     be a valid
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.Format.Format',
+-- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlags',
+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data CommandBufferInheritanceRenderingInfo = CommandBufferInheritanceRenderingInfo
+  { -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.RenderingFlagBits.RenderingFlagBits' used by the
+    -- render pass instance.
+    flags :: RenderingFlags
+  , -- | @viewMask@ is the view mask used for rendering.
+    viewMask :: Word32
+  , -- | @pColorAttachmentFormats@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color
+    -- attachments.
+    colorAttachmentFormats :: Vector Format
+  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the depth attachment.
+    depthAttachmentFormat :: Format
+  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
+    -- defining the format of the stencil attachment.
+    stencilAttachmentFormat :: Format
+  , -- | @rasterizationSamples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying
+    -- the number of samples used in rasterization.
+    rasterizationSamples :: SampleCountFlagBits
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CommandBufferInheritanceRenderingInfo)
+#endif
+deriving instance Show CommandBufferInheritanceRenderingInfo
+
+instance ToCStruct CommandBufferInheritanceRenderingInfo where
+  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CommandBufferInheritanceRenderingInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr RenderingFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewMask)
+    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentFormats)) :: Word32))
+    pPColorAttachmentFormats' <- ContT $ allocaBytes @Format ((Data.Vector.length (colorAttachmentFormats)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (colorAttachmentFormats)
+    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Format))) (pPColorAttachmentFormats')
+    lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (depthAttachmentFormat)
+    lift $ poke ((p `plusPtr` 44 :: Ptr Format)) (stencilAttachmentFormat)
+    lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (rasterizationSamples)
+    lift $ f
+  cStructSize = 56
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Format)) (zero)
+    poke ((p `plusPtr` 44 :: Ptr Format)) (zero)
+    f
+
+instance FromCStruct CommandBufferInheritanceRenderingInfo where
+  peekCStruct p = do
+    flags <- peek @RenderingFlags ((p `plusPtr` 16 :: Ptr RenderingFlags))
+    viewMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 32 :: Ptr (Ptr Format)))
+    pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Format ((pColorAttachmentFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))
+    depthAttachmentFormat <- peek @Format ((p `plusPtr` 40 :: Ptr Format))
+    stencilAttachmentFormat <- peek @Format ((p `plusPtr` 44 :: Ptr Format))
+    rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 48 :: Ptr SampleCountFlagBits))
+    pure $ CommandBufferInheritanceRenderingInfo
+             flags viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat rasterizationSamples
+
+instance Zero CommandBufferInheritanceRenderingInfo where
+  zero = CommandBufferInheritanceRenderingInfo
+           zero
+           zero
+           mempty
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_dynamic_rendering.hs-boot
@@ -0,0 +1,51 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_dynamic_rendering"
+module Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering  ( CommandBufferInheritanceRenderingInfo
+                                                             , PhysicalDeviceDynamicRenderingFeatures
+                                                             , PipelineRenderingCreateInfo
+                                                             , RenderingAttachmentInfo
+                                                             , RenderingInfo
+                                                             ) 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 (PokeChain)
+data CommandBufferInheritanceRenderingInfo
+
+instance ToCStruct CommandBufferInheritanceRenderingInfo
+instance Show CommandBufferInheritanceRenderingInfo
+
+instance FromCStruct CommandBufferInheritanceRenderingInfo
+
+
+data PhysicalDeviceDynamicRenderingFeatures
+
+instance ToCStruct PhysicalDeviceDynamicRenderingFeatures
+instance Show PhysicalDeviceDynamicRenderingFeatures
+
+instance FromCStruct PhysicalDeviceDynamicRenderingFeatures
+
+
+data PipelineRenderingCreateInfo
+
+instance ToCStruct PipelineRenderingCreateInfo
+instance Show PipelineRenderingCreateInfo
+
+instance FromCStruct PipelineRenderingCreateInfo
+
+
+data RenderingAttachmentInfo
+
+instance ToCStruct RenderingAttachmentInfo
+instance Show RenderingAttachmentInfo
+
+
+type role RenderingInfo nominal
+data RenderingInfo (es :: [Type])
+
+instance (Extendss RenderingInfo es, PokeChain es) => ToCStruct (RenderingInfo es)
+instance Show (Chain es) => Show (RenderingInfo es)
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs
@@ -0,0 +1,105 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_format_feature_flags2"
+module Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2  ( FormatProperties3(..)
+                                                                 , StructureType(..)
+                                                                 , FormatFeatureFlagBits2(..)
+                                                                 , FormatFeatureFlags2
+                                                                 ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FORMAT_PROPERTIES_3))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2(..))
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkFormatProperties3 - Structure specifying image format properties
+--
+-- = Description
+--
+-- The bits reported in @linearTilingFeatures@, @optimalTilingFeatures@ and
+-- @bufferFeatures@ /must/ include the bits reported in the corresponding
+-- fields of
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'::@formatProperties@.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data FormatProperties3 = FormatProperties3
+  { -- | @linearTilingFeatures@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2'
+    -- specifying features supported by images created with a @tiling@
+    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'.
+    linearTilingFeatures :: FormatFeatureFlags2
+  , -- | @optimalTilingFeatures@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2'
+    -- specifying features supported by images created with a @tiling@
+    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
+    optimalTilingFeatures :: FormatFeatureFlags2
+  , -- | @bufferFeatures@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2'
+    -- specifying features supported by buffers.
+    bufferFeatures :: FormatFeatureFlags2
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (FormatProperties3)
+#endif
+deriving instance Show FormatProperties3
+
+instance ToCStruct FormatProperties3 where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p FormatProperties3{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_3)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2)) (linearTilingFeatures)
+    poke ((p `plusPtr` 24 :: Ptr FormatFeatureFlags2)) (optimalTilingFeatures)
+    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2)) (bufferFeatures)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_3)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct FormatProperties3 where
+  peekCStruct p = do
+    linearTilingFeatures <- peek @FormatFeatureFlags2 ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2))
+    optimalTilingFeatures <- peek @FormatFeatureFlags2 ((p `plusPtr` 24 :: Ptr FormatFeatureFlags2))
+    bufferFeatures <- peek @FormatFeatureFlags2 ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2))
+    pure $ FormatProperties3
+             linearTilingFeatures optimalTilingFeatures bufferFeatures
+
+instance Storable FormatProperties3 where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero FormatProperties3 where
+  zero = FormatProperties3
+           zero
+           zero
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_format_feature_flags2.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_format_feature_flags2"
+module Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2  (FormatProperties3) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data FormatProperties3
+
+instance ToCStruct FormatProperties3
+instance Show FormatProperties3
+
+instance FromCStruct FormatProperties3
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs
@@ -0,0 +1,566 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance4"
+module Vulkan.Core13.Promoted_From_VK_KHR_maintenance4  ( getDeviceBufferMemoryRequirements
+                                                        , getDeviceImageMemoryRequirements
+                                                        , getDeviceImageSparseMemoryRequirements
+                                                        , DeviceBufferMemoryRequirements(..)
+                                                        , DeviceImageMemoryRequirements(..)
+                                                        , PhysicalDeviceMaintenance4Features(..)
+                                                        , PhysicalDeviceMaintenance4Properties(..)
+                                                        , StructureType(..)
+                                                        ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.IO (throwIO)
+import GHC.Ptr (castPtr)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import 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.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (withSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Buffer (BufferCreateInfo)
+import Vulkan.Core10.Handles (Device)
+import Vulkan.Core10.Handles (Device(..))
+import Vulkan.Core10.Handles (Device(Device))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceBufferMemoryRequirements))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceImageMemoryRequirements))
+import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceImageSparseMemoryRequirements))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Device_T)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits)
+import Vulkan.Core10.Image (ImageCreateInfo)
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.CStruct.Extends (SomeStruct(..))
+import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceBufferMemoryRequirements
+  :: FunPtr (Ptr Device_T -> Ptr DeviceBufferMemoryRequirements -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr DeviceBufferMemoryRequirements -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetDeviceBufferMemoryRequirements - Returns the memory requirements
+-- for specified Vulkan object
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Device', 'DeviceBufferMemoryRequirements',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+getDeviceBufferMemoryRequirements :: forall a io
+                                   . (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io)
+                                  => -- | @device@ is the logical device intended to own the buffer.
+                                     --
+                                     -- #VUID-vkGetDeviceBufferMemoryRequirements-device-parameter# @device@
+                                     -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                     Device
+                                  -> -- | @pInfo@ is a pointer to a 'DeviceBufferMemoryRequirements' structure
+                                     -- containing parameters required for the memory requirements query.
+                                     --
+                                     -- #VUID-vkGetDeviceBufferMemoryRequirements-pInfo-parameter# @pInfo@
+                                     -- /must/ be a valid pointer to a valid 'DeviceBufferMemoryRequirements'
+                                     -- structure
+                                     ("info" ::: DeviceBufferMemoryRequirements)
+                                  -> io (MemoryRequirements2 a)
+getDeviceBufferMemoryRequirements device info = liftIO . evalContT $ do
+  let vkGetDeviceBufferMemoryRequirementsPtr = pVkGetDeviceBufferMemoryRequirements (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceBufferMemoryRequirementsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceBufferMemoryRequirements is null" Nothing Nothing
+  let vkGetDeviceBufferMemoryRequirements' = mkVkGetDeviceBufferMemoryRequirements vkGetDeviceBufferMemoryRequirementsPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetDeviceBufferMemoryRequirements" (vkGetDeviceBufferMemoryRequirements' (deviceHandle (device)) pInfo (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceImageMemoryRequirements
+  :: FunPtr (Ptr Device_T -> Ptr DeviceImageMemoryRequirements -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr DeviceImageMemoryRequirements -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+
+-- | vkGetDeviceImageMemoryRequirements - Returns the memory requirements for
+-- specified Vulkan object
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Device', 'DeviceImageMemoryRequirements',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
+getDeviceImageMemoryRequirements :: forall a io
+                                  . (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io)
+                                 => -- | @device@ is the logical device intended to own the image.
+                                    --
+                                    -- #VUID-vkGetDeviceImageMemoryRequirements-device-parameter# @device@
+                                    -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+                                    Device
+                                 -> -- | @pInfo@ is a pointer to a 'DeviceImageMemoryRequirements' structure
+                                    -- containing parameters required for the memory requirements query.
+                                    --
+                                    -- #VUID-vkGetDeviceImageMemoryRequirements-pInfo-parameter# @pInfo@ /must/
+                                    -- be a valid pointer to a valid 'DeviceImageMemoryRequirements' structure
+                                    ("info" ::: DeviceImageMemoryRequirements)
+                                 -> io (MemoryRequirements2 a)
+getDeviceImageMemoryRequirements device info = liftIO . evalContT $ do
+  let vkGetDeviceImageMemoryRequirementsPtr = pVkGetDeviceImageMemoryRequirements (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceImageMemoryRequirementsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceImageMemoryRequirements is null" Nothing Nothing
+  let vkGetDeviceImageMemoryRequirements' = mkVkGetDeviceImageMemoryRequirements vkGetDeviceImageMemoryRequirementsPtr
+  pInfo <- ContT $ withCStruct (info)
+  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
+  lift $ traceAroundEvent "vkGetDeviceImageMemoryRequirements" (vkGetDeviceImageMemoryRequirements' (deviceHandle (device)) pInfo (forgetExtensions (pPMemoryRequirements)))
+  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
+  pure $ (pMemoryRequirements)
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetDeviceImageSparseMemoryRequirements
+  :: FunPtr (Ptr Device_T -> Ptr DeviceImageMemoryRequirements -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()) -> Ptr Device_T -> Ptr DeviceImageMemoryRequirements -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()
+
+-- | vkGetDeviceImageSparseMemoryRequirements - Query the memory requirements
+-- for a sparse image
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetDeviceImageSparseMemoryRequirements-device-parameter#
+--     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
+--
+-- -   #VUID-vkGetDeviceImageSparseMemoryRequirements-pInfo-parameter#
+--     @pInfo@ /must/ be a valid pointer to a valid
+--     'DeviceImageMemoryRequirements' structure
+--
+-- -   #VUID-vkGetDeviceImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter#
+--     @pSparseMemoryRequirementCount@ /must/ be a valid pointer to a
+--     @uint32_t@ value
+--
+-- -   #VUID-vkGetDeviceImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter#
+--     If the value referenced by @pSparseMemoryRequirementCount@ is not
+--     @0@, and @pSparseMemoryRequirements@ is not @NULL@,
+--     @pSparseMemoryRequirements@ /must/ be a valid pointer to an array of
+--     @pSparseMemoryRequirementCount@
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2'
+--     structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Device', 'DeviceImageMemoryRequirements',
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2'
+getDeviceImageSparseMemoryRequirements :: forall io
+                                        . (MonadIO io)
+                                       => -- | @device@ is the logical device intended to own the image.
+                                          Device
+                                       -> -- | @pInfo@ is a pointer to a 'DeviceImageMemoryRequirements' structure
+                                          -- containing parameters required for the memory requirements query.
+                                          ("info" ::: DeviceImageMemoryRequirements)
+                                       -> io (("sparseMemoryRequirements" ::: Vector SparseImageMemoryRequirements2))
+getDeviceImageSparseMemoryRequirements device info = liftIO . evalContT $ do
+  let vkGetDeviceImageSparseMemoryRequirementsPtr = pVkGetDeviceImageSparseMemoryRequirements (case device of Device{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetDeviceImageSparseMemoryRequirementsPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceImageSparseMemoryRequirements is null" Nothing Nothing
+  let vkGetDeviceImageSparseMemoryRequirements' = mkVkGetDeviceImageSparseMemoryRequirements vkGetDeviceImageSparseMemoryRequirementsPtr
+  let device' = deviceHandle (device)
+  pInfo <- ContT $ withCStruct (info)
+  pPSparseMemoryRequirementCount <- ContT $ bracket (callocBytes @Word32 4) free
+  lift $ traceAroundEvent "vkGetDeviceImageSparseMemoryRequirements" (vkGetDeviceImageSparseMemoryRequirements' device' pInfo (pPSparseMemoryRequirementCount) (nullPtr))
+  pSparseMemoryRequirementCount <- lift $ peek @Word32 pPSparseMemoryRequirementCount
+  pPSparseMemoryRequirements <- ContT $ bracket (callocBytes @SparseImageMemoryRequirements2 ((fromIntegral (pSparseMemoryRequirementCount)) * 64)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPSparseMemoryRequirements `advancePtrBytes` (i * 64) :: Ptr SparseImageMemoryRequirements2) . ($ ())) [0..(fromIntegral (pSparseMemoryRequirementCount)) - 1]
+  lift $ traceAroundEvent "vkGetDeviceImageSparseMemoryRequirements" (vkGetDeviceImageSparseMemoryRequirements' device' pInfo (pPSparseMemoryRequirementCount) ((pPSparseMemoryRequirements)))
+  pSparseMemoryRequirementCount' <- lift $ peek @Word32 pPSparseMemoryRequirementCount
+  pSparseMemoryRequirements' <- lift $ generateM (fromIntegral (pSparseMemoryRequirementCount')) (\i -> peekCStruct @SparseImageMemoryRequirements2 (((pPSparseMemoryRequirements) `advancePtrBytes` (64 * (i)) :: Ptr SparseImageMemoryRequirements2)))
+  pure $ (pSparseMemoryRequirements')
+
+
+-- | VkDeviceBufferMemoryRequirements - (None)
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Buffer.BufferCreateInfo',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDeviceBufferMemoryRequirements',
+-- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceBufferMemoryRequirementsKHR'
+data DeviceBufferMemoryRequirements = DeviceBufferMemoryRequirements
+  { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Buffer.BufferCreateInfo'
+    -- structure containing parameters affecting creation of the buffer to
+    -- query.
+    --
+    -- #VUID-VkDeviceBufferMemoryRequirements-pCreateInfo-parameter#
+    -- @pCreateInfo@ /must/ be a valid pointer to a valid
+    -- 'Vulkan.Core10.Buffer.BufferCreateInfo' structure
+    createInfo :: SomeStruct BufferCreateInfo }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceBufferMemoryRequirements)
+#endif
+deriving instance Show DeviceBufferMemoryRequirements
+
+instance ToCStruct DeviceBufferMemoryRequirements where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceBufferMemoryRequirements{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pCreateInfo'' <- ContT @_ @_ @(Ptr (BufferCreateInfo '[])) $ \cont -> withSomeCStruct @BufferCreateInfo (createInfo) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (BufferCreateInfo _)))) pCreateInfo''
+    lift $ f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pCreateInfo'' <- ContT @_ @_ @(Ptr (BufferCreateInfo '[])) $ \cont -> withSomeCStruct @BufferCreateInfo ((SomeStruct zero)) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (BufferCreateInfo _)))) pCreateInfo''
+    lift $ f
+
+instance FromCStruct DeviceBufferMemoryRequirements where
+  peekCStruct p = do
+    pCreateInfo <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (BufferCreateInfo _))))
+    pure $ DeviceBufferMemoryRequirements
+             pCreateInfo
+
+instance Zero DeviceBufferMemoryRequirements where
+  zero = DeviceBufferMemoryRequirements
+           (SomeStruct zero)
+
+
+-- | VkDeviceImageMemoryRequirements - (None)
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06416# The
+--     @pCreateInfo@::@pNext@ chain /must/ not contain a
+--     'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'
+--     structure
+--
+-- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06417# If
+--     @pCreateInfo@::@flags@ has
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
+--     set then @planeAspect@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_NONE_KHR'
+--
+-- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06418# If
+--     @pCreateInfo@::@flags@ has
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
+--     set then @planeAspect@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_NONE_KHR'
+--
+-- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06419# If
+--     @pCreateInfo@::@flags@ has
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
+--     set and if the @pCreateInfo@::@tiling@ is
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then
+--     @planeAspect@ /must/ be a single valid /format plane/ for the image
+--     (that is, for a two-plane image @planeAspect@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     and for a three-plane image @planeAspect@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT')
+--
+-- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06420# If
+--     @pCreateInfo@::@flags@ has
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
+--     set and the @pCreateInfo@::@tiling@ is
+--     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
+--     then @planeAspect@ /must/ be a single valid /memory plane/ for the
+--     image (that is, @aspectMask@ /must/ specify a plane index that is
+--     less than the
+--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@
+--     associated with the image’s @format@ and
+--     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@)
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDeviceImageMemoryRequirements-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS'
+--
+-- -   #VUID-VkDeviceImageMemoryRequirements-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkDeviceImageMemoryRequirements-pCreateInfo-parameter#
+--     @pCreateInfo@ /must/ be a valid pointer to a valid
+--     'Vulkan.Core10.Image.ImageCreateInfo' structure
+--
+-- -   #VUID-VkDeviceImageMemoryRequirements-planeAspect-parameter#
+--     @planeAspect@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',
+-- 'Vulkan.Core10.Image.ImageCreateInfo',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getDeviceImageMemoryRequirements',
+-- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageMemoryRequirementsKHR',
+-- 'getDeviceImageSparseMemoryRequirements',
+-- 'Vulkan.Extensions.VK_KHR_maintenance4.getDeviceImageSparseMemoryRequirementsKHR'
+data DeviceImageMemoryRequirements = DeviceImageMemoryRequirements
+  { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Image.ImageCreateInfo'
+    -- structure containing parameters affecting creation of the image to
+    -- query.
+    createInfo :: SomeStruct ImageCreateInfo
+  , -- | @planeAspect@ is a
+    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
+    -- specifying the aspect corresponding to the image plane to query. This
+    -- parameter is ignored unless @pCreateInfo@::@flags@ has
+    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT' or
+    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
+    -- set.
+    planeAspect :: ImageAspectFlagBits
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceImageMemoryRequirements)
+#endif
+deriving instance Show DeviceImageMemoryRequirements
+
+instance ToCStruct DeviceImageMemoryRequirements where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceImageMemoryRequirements{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pCreateInfo'' <- ContT @_ @_ @(Ptr (ImageCreateInfo '[])) $ \cont -> withSomeCStruct @ImageCreateInfo (createInfo) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _)))) pCreateInfo''
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageAspectFlagBits)) (planeAspect)
+    lift $ f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    pCreateInfo'' <- ContT @_ @_ @(Ptr (ImageCreateInfo '[])) $ \cont -> withSomeCStruct @ImageCreateInfo ((SomeStruct zero)) (cont . castPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _)))) pCreateInfo''
+    lift $ poke ((p `plusPtr` 24 :: Ptr ImageAspectFlagBits)) (zero)
+    lift $ f
+
+instance FromCStruct DeviceImageMemoryRequirements where
+  peekCStruct p = do
+    pCreateInfo <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _))))
+    planeAspect <- peek @ImageAspectFlagBits ((p `plusPtr` 24 :: Ptr ImageAspectFlagBits))
+    pure $ DeviceImageMemoryRequirements
+             pCreateInfo planeAspect
+
+instance Zero DeviceImageMemoryRequirements where
+  zero = DeviceImageMemoryRequirements
+           (SomeStruct zero)
+           zero
+
+
+-- | VkPhysicalDeviceMaintenance4Features - Structure describing whether the
+-- implementation supports maintenance4 functionality
+--
+-- = Members
+--
+-- This structure describes the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance4Features' 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. 'PhysicalDeviceMaintenance4Features' /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_KHR_maintenance4 VK_KHR_maintenance4>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance4Features = PhysicalDeviceMaintenance4Features
+  { -- | #extension-features-maintenance4# @maintenance4@ indicates that the
+    -- implementation supports the following:
+    --
+    -- -   The application /may/ destroy a
+    --     'Vulkan.Core10.Handles.PipelineLayout' object immediately after
+    --     using it to create another object.
+    --
+    -- -   @LocalSizeId@ /can/ be used as an alternative to @LocalSize@ to
+    --     specify the local workgroup size with specialization constants.
+    --
+    -- -   Images created with identical creation parameters will always have
+    --     the same alignment requirements.
+    --
+    -- -   The size memory requirement of a buffer or image is never greater
+    --     than that of another buffer or image created with a greater or equal
+    --     size.
+    --
+    -- -   Push constants do not have to be initialized before they are
+    --     dynamically accessed.
+    --
+    -- -   The interface matching rules allow a larger output vector to match
+    --     with a smaller input vector, with additional values being discarded.
+    maintenance4 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance4Features)
+#endif
+deriving instance Show PhysicalDeviceMaintenance4Features
+
+instance ToCStruct PhysicalDeviceMaintenance4Features where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance4Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance4))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance4Features where
+  peekCStruct p = do
+    maintenance4 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceMaintenance4Features
+             (bool32ToBool maintenance4)
+
+instance Storable PhysicalDeviceMaintenance4Features where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance4Features where
+  zero = PhysicalDeviceMaintenance4Features
+           zero
+
+
+-- | VkPhysicalDeviceMaintenance4Properties - Structure describing various
+-- implementation-defined properties introduced with VK_KHR_maintenance4
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceMaintenance4Properties' 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_KHR_maintenance4 VK_KHR_maintenance4>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceMaintenance4Properties = PhysicalDeviceMaintenance4Properties
+  { -- | #extension-limits-maxBufferSize# @maxBufferSize@ is the maximum size
+    -- 'Vulkan.Core10.Handles.Buffer' that /can/ be created.
+    maxBufferSize :: DeviceSize }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceMaintenance4Properties)
+#endif
+deriving instance Show PhysicalDeviceMaintenance4Properties
+
+instance ToCStruct PhysicalDeviceMaintenance4Properties where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceMaintenance4Properties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (maxBufferSize)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct PhysicalDeviceMaintenance4Properties where
+  peekCStruct p = do
+    maxBufferSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
+    pure $ PhysicalDeviceMaintenance4Properties
+             maxBufferSize
+
+instance Storable PhysicalDeviceMaintenance4Properties where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceMaintenance4Properties where
+  zero = PhysicalDeviceMaintenance4Properties
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_maintenance4.hs-boot
@@ -0,0 +1,43 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_maintenance4"
+module Vulkan.Core13.Promoted_From_VK_KHR_maintenance4  ( DeviceBufferMemoryRequirements
+                                                        , DeviceImageMemoryRequirements
+                                                        , PhysicalDeviceMaintenance4Features
+                                                        , PhysicalDeviceMaintenance4Properties
+                                                        ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DeviceBufferMemoryRequirements
+
+instance ToCStruct DeviceBufferMemoryRequirements
+instance Show DeviceBufferMemoryRequirements
+
+instance FromCStruct DeviceBufferMemoryRequirements
+
+
+data DeviceImageMemoryRequirements
+
+instance ToCStruct DeviceImageMemoryRequirements
+instance Show DeviceImageMemoryRequirements
+
+instance FromCStruct DeviceImageMemoryRequirements
+
+
+data PhysicalDeviceMaintenance4Features
+
+instance ToCStruct PhysicalDeviceMaintenance4Features
+instance Show PhysicalDeviceMaintenance4Features
+
+instance FromCStruct PhysicalDeviceMaintenance4Features
+
+
+data PhysicalDeviceMaintenance4Properties
+
+instance ToCStruct PhysicalDeviceMaintenance4Properties
+instance Show PhysicalDeviceMaintenance4Properties
+
+instance FromCStruct PhysicalDeviceMaintenance4Properties
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_integer_dot_product.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_integer_dot_product.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_integer_dot_product.hs
@@ -0,0 +1,478 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_integer_dot_product"
+module Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product  ( PhysicalDeviceShaderIntegerDotProductFeatures(..)
+                                                                      , PhysicalDeviceShaderIntegerDotProductProperties(..)
+                                                                      , StructureType(..)
+                                                                      ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceShaderIntegerDotProductFeatures - Structure describing
+-- integer dot product features that can be supported by an implementation
+--
+-- = Members
+--
+-- The members of the 'PhysicalDeviceShaderIntegerDotProductFeatures'
+-- structure describe the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderIntegerDotProductFeatures' 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. 'PhysicalDeviceShaderIntegerDotProductFeatures' /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_KHR_shader_integer_dot_product VK_KHR_shader_integer_dot_product>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderIntegerDotProductFeatures = PhysicalDeviceShaderIntegerDotProductFeatures
+  { -- | #extension-features-shaderIntegerDotProduct# @shaderIntegerDotProduct@
+    -- specifies whether shader modules /can/ declare the
+    -- @DotProductInputAllKHR@, @DotProductInput4x8BitKHR@,
+    -- @DotProductInput4x8BitPackedKHR@ and @DotProductKHR@ capabilities.
+    shaderIntegerDotProduct :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderIntegerDotProductFeatures)
+#endif
+deriving instance Show PhysicalDeviceShaderIntegerDotProductFeatures
+
+instance ToCStruct PhysicalDeviceShaderIntegerDotProductFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderIntegerDotProductFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderIntegerDotProduct))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderIntegerDotProductFeatures where
+  peekCStruct p = do
+    shaderIntegerDotProduct <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderIntegerDotProductFeatures
+             (bool32ToBool shaderIntegerDotProduct)
+
+instance Storable PhysicalDeviceShaderIntegerDotProductFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderIntegerDotProductFeatures where
+  zero = PhysicalDeviceShaderIntegerDotProductFeatures
+           zero
+
+
+-- | VkPhysicalDeviceShaderIntegerDotProductProperties - Structure containing
+-- information about integer dot product support for a physical device
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderIntegerDotProductProperties' structure is
+-- included in the @pNext@ chain of the
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
+-- structure passed to
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
+-- it is filled in with each corresponding implementation-dependent
+-- property.
+--
+-- These are properties of the integer dot product acceleration information
+-- of a physical device.
+--
+-- Note
+--
+-- A dot product operation is deemed accelerated if its implementation
+-- provides a performance advantage over application-provided code composed
+-- from elementary instructions and\/or other dot product instructions,
+-- either because the implementation uses optimized machine code sequences
+-- whose generation from application-provided code cannot be guaranteed or
+-- because it uses hardware features that cannot otherwise be targeted from
+-- application-provided code.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_integer_dot_product VK_KHR_shader_integer_dot_product>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderIntegerDotProductProperties = PhysicalDeviceShaderIntegerDotProductProperties
+  { -- | @integerDotProduct8BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct8BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct8BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct8BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct8BitMixedSignednessAccelerated@ is a boolean that will
+    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit mixed
+    -- signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct8BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct4x8BitPackedUnsignedAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit
+    -- unsigned dot product operations from operands packed into 32-bit
+    -- integers using the @OpUDotKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct4x8BitPackedUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct4x8BitPackedSignedAccelerated@ is a boolean that will
+    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
+    -- dot product operations from operands packed into 32-bit integers using
+    -- the @OpSDotKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct4x8BitPackedSignedAccelerated :: Bool
+  , -- | @integerDotProduct4x8BitPackedMixedSignednessAccelerated@ is a boolean
+    -- that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for
+    -- 8-bit mixed signedness dot product operations from operands packed into
+    -- 32-bit integers using the @OpSUDotKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct4x8BitPackedMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct16BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct16BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct16BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct16BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct16BitMixedSignednessAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit
+    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct16BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct32BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct32BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct32BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct32BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct32BitMixedSignednessAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit
+    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct32BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProduct64BitUnsignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit unsigned
+    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct64BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProduct64BitSignedAccelerated@ is a boolean that will be
+    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit signed
+    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct64BitSignedAccelerated :: Bool
+  , -- | @integerDotProduct64BitMixedSignednessAccelerated@ is a boolean that
+    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit
+    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
+    -- instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProduct64BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating8BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating8BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating8BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit unsigned accumulating saturating dot product
+    -- operations from operands packed into 32-bit integers using the
+    -- @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit signed accumulating saturating dot product operations
+    -- from operands packed into 32-bit integers using the @OpSDotAccSatKHR@
+    -- SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 8-bit mixed signedness accumulating saturating dot product
+    -- operations from operands packed into 32-bit integers using the
+    -- @OpSUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating16BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 16-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating16BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 16-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating16BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 16-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating32BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 32-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating32BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 32-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating32BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 32-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating64BitUnsignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 64-bit unsigned accumulating saturating dot product
+    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating64BitSignedAccelerated@ is a
+    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 64-bit signed accumulating saturating dot product operations
+    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating64BitSignedAccelerated :: Bool
+  , -- | @integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated@
+    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
+    -- support for 64-bit mixed signedness accumulating saturating dot product
+    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
+    -- accelerated
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
+    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderIntegerDotProductProperties)
+#endif
+deriving instance Show PhysicalDeviceShaderIntegerDotProductProperties
+
+instance ToCStruct PhysicalDeviceShaderIntegerDotProductProperties where
+  withCStruct x f = allocaBytes 136 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderIntegerDotProductProperties{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitUnsignedAccelerated))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitSignedAccelerated))
+    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedUnsignedAccelerated))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedSignedAccelerated))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedMixedSignednessAccelerated))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitUnsignedAccelerated))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitSignedAccelerated))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitUnsignedAccelerated))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitSignedAccelerated))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitUnsignedAccelerated))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitSignedAccelerated))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitUnsignedAccelerated))
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitSignedAccelerated))
+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated))
+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated))
+    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated))
+    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitUnsignedAccelerated))
+    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitSignedAccelerated))
+    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitUnsignedAccelerated))
+    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitSignedAccelerated))
+    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated))
+    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitUnsignedAccelerated))
+    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitSignedAccelerated))
+    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated))
+    f
+  cStructSize = 136
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES)
+    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))
+    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderIntegerDotProductProperties where
+  peekCStruct p = do
+    integerDotProduct8BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    integerDotProduct8BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    integerDotProduct8BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
+    integerDotProduct4x8BitPackedUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
+    integerDotProduct4x8BitPackedSignedAccelerated <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
+    integerDotProduct4x8BitPackedMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
+    integerDotProduct16BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
+    integerDotProduct16BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
+    integerDotProduct16BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
+    integerDotProduct32BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
+    integerDotProduct32BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
+    integerDotProduct32BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
+    integerDotProduct64BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
+    integerDotProduct64BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
+    integerDotProduct64BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating8BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating16BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating32BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating64BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))
+    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderIntegerDotProductProperties
+             (bool32ToBool integerDotProduct8BitUnsignedAccelerated) (bool32ToBool integerDotProduct8BitSignedAccelerated) (bool32ToBool integerDotProduct8BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct4x8BitPackedUnsignedAccelerated) (bool32ToBool integerDotProduct4x8BitPackedSignedAccelerated) (bool32ToBool integerDotProduct4x8BitPackedMixedSignednessAccelerated) (bool32ToBool integerDotProduct16BitUnsignedAccelerated) (bool32ToBool integerDotProduct16BitSignedAccelerated) (bool32ToBool integerDotProduct16BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct32BitUnsignedAccelerated) (bool32ToBool integerDotProduct32BitSignedAccelerated) (bool32ToBool integerDotProduct32BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct64BitUnsignedAccelerated) (bool32ToBool integerDotProduct64BitSignedAccelerated) (bool32ToBool integerDotProduct64BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated)
+
+instance Storable PhysicalDeviceShaderIntegerDotProductProperties where
+  sizeOf ~_ = 136
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderIntegerDotProductProperties where
+  zero = PhysicalDeviceShaderIntegerDotProductProperties
+           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
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_integer_dot_product.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_integer_dot_product.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_integer_dot_product.hs-boot
@@ -0,0 +1,25 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_integer_dot_product"
+module Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product  ( PhysicalDeviceShaderIntegerDotProductFeatures
+                                                                      , PhysicalDeviceShaderIntegerDotProductProperties
+                                                                      ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderIntegerDotProductFeatures
+
+instance ToCStruct PhysicalDeviceShaderIntegerDotProductFeatures
+instance Show PhysicalDeviceShaderIntegerDotProductFeatures
+
+instance FromCStruct PhysicalDeviceShaderIntegerDotProductFeatures
+
+
+data PhysicalDeviceShaderIntegerDotProductProperties
+
+instance ToCStruct PhysicalDeviceShaderIntegerDotProductProperties
+instance Show PhysicalDeviceShaderIntegerDotProductProperties
+
+instance FromCStruct PhysicalDeviceShaderIntegerDotProductProperties
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs
@@ -0,0 +1,98 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_terminate_invocation"
+module Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation  ( PhysicalDeviceShaderTerminateInvocationFeatures(..)
+                                                                       , StructureType(..)
+                                                                       ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceShaderTerminateInvocationFeatures - Structure describing
+-- support for the SPIR-V @SPV_KHR_terminate_invocation@ extension
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceShaderTerminateInvocationFeatures' 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. 'PhysicalDeviceShaderTerminateInvocationFeatures' /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_KHR_shader_terminate_invocation VK_KHR_shader_terminate_invocation>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceShaderTerminateInvocationFeatures = PhysicalDeviceShaderTerminateInvocationFeatures
+  { -- | #extension-features-shaderTerminateInvocation#
+    -- @shaderTerminateInvocation@ specifies whether the implementation
+    -- supports SPIR-V modules that use the @SPV_KHR_terminate_invocation@
+    -- extension.
+    shaderTerminateInvocation :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceShaderTerminateInvocationFeatures)
+#endif
+deriving instance Show PhysicalDeviceShaderTerminateInvocationFeatures
+
+instance ToCStruct PhysicalDeviceShaderTerminateInvocationFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceShaderTerminateInvocationFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderTerminateInvocation))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceShaderTerminateInvocationFeatures where
+  peekCStruct p = do
+    shaderTerminateInvocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceShaderTerminateInvocationFeatures
+             (bool32ToBool shaderTerminateInvocation)
+
+instance Storable PhysicalDeviceShaderTerminateInvocationFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceShaderTerminateInvocationFeatures where
+  zero = PhysicalDeviceShaderTerminateInvocationFeatures
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_shader_terminate_invocation.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_shader_terminate_invocation"
+module Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation  (PhysicalDeviceShaderTerminateInvocationFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceShaderTerminateInvocationFeatures
+
+instance ToCStruct PhysicalDeviceShaderTerminateInvocationFeatures
+instance Show PhysicalDeviceShaderTerminateInvocationFeatures
+
+instance FromCStruct PhysicalDeviceShaderTerminateInvocationFeatures
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs
@@ -0,0 +1,4855 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_synchronization2"
+module Vulkan.Core13.Promoted_From_VK_KHR_synchronization2  ( cmdSetEvent2
+                                                            , cmdResetEvent2
+                                                            , cmdWaitEvents2
+                                                            , cmdWaitEvents2Safe
+                                                            , cmdPipelineBarrier2
+                                                            , queueSubmit2
+                                                            , cmdWriteTimestamp2
+                                                            , MemoryBarrier2(..)
+                                                            , ImageMemoryBarrier2(..)
+                                                            , BufferMemoryBarrier2(..)
+                                                            , DependencyInfo(..)
+                                                            , SemaphoreSubmitInfo(..)
+                                                            , CommandBufferSubmitInfo(..)
+                                                            , SubmitInfo2(..)
+                                                            , PhysicalDeviceSynchronization2Features(..)
+                                                            , ImageLayout(..)
+                                                            , StructureType(..)
+                                                            , AccessFlagBits(..)
+                                                            , AccessFlags
+                                                            , PipelineStageFlagBits(..)
+                                                            , PipelineStageFlags
+                                                            , AccessFlagBits2(..)
+                                                            , AccessFlags2
+                                                            , PipelineStageFlagBits2(..)
+                                                            , PipelineStageFlags2
+                                                            , SubmitFlagBits(..)
+                                                            , SubmitFlags
+                                                            , EventCreateFlagBits(..)
+                                                            , EventCreateFlags
+                                                            ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Data.Typeable (eqT)
+import Foreign.Marshal.Alloc (allocaBytes)
+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 Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.Type.Equality ((:~:)(Refl))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Word (Word64)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Extends (forgetExtensions)
+import Vulkan.CStruct.Extends (peekSomeCStruct)
+import Vulkan.CStruct.Extends (pokeSomeCStruct)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Handles (Buffer)
+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.Enums.DependencyFlagBits (DependencyFlags)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdPipelineBarrier2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdResetEvent2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdSetEvent2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdWaitEvents2))
+import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteTimestamp2))
+import Vulkan.Dynamic (DeviceCmds(pVkQueueSubmit2))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core10.Handles (Event)
+import Vulkan.Core10.Handles (Event(..))
+import Vulkan.CStruct.Extends (Extends)
+import Vulkan.CStruct.Extends (Extendss)
+import Vulkan.CStruct.Extends (Extensible(..))
+import Vulkan.Core10.Handles (Fence)
+import Vulkan.Core10.Handles (Fence(..))
+import Vulkan.Core10.Handles (Image)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.ImageView (ImageSubresourceRange)
+import Vulkan.CStruct.Extends (PeekChain)
+import Vulkan.CStruct.Extends (PeekChain(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceQuerySubmitInfoKHR)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(..))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.CStruct.Extends (PokeChain)
+import Vulkan.CStruct.Extends (PokeChain(..))
+import Vulkan.Core10.Handles (QueryPool)
+import Vulkan.Core10.Handles (QueryPool(..))
+import Vulkan.Core10.Handles (Queue)
+import Vulkan.Core10.Handles (Queue(..))
+import Vulkan.Core10.Handles (Queue(Queue))
+import Vulkan.Core10.Handles (Queue_T)
+import Vulkan.Core10.Enums.Result (Result)
+import Vulkan.Core10.Enums.Result (Result(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
+import Vulkan.Core10.Handles (Semaphore)
+import Vulkan.CStruct.Extends (SomeStruct)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core13.Enums.SubmitFlagBits (SubmitFlags)
+import Vulkan.Exception (VulkanException(..))
+import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR)
+import {-# SOURCE #-} Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEPENDENCY_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBMIT_INFO_2))
+import Vulkan.Core10.Enums.Result (Result(SUCCESS))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(..))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(..))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core10.Enums.EventCreateFlagBits (EventCreateFlagBits(..))
+import Vulkan.Core10.Enums.EventCreateFlagBits (EventCreateFlags)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(..))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(..))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(..))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+import Vulkan.Core13.Enums.SubmitFlagBits (SubmitFlagBits(..))
+import Vulkan.Core13.Enums.SubmitFlagBits (SubmitFlags)
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdSetEvent2
+  :: FunPtr (Ptr CommandBuffer_T -> Event -> Ptr DependencyInfo -> IO ()) -> Ptr CommandBuffer_T -> Event -> Ptr DependencyInfo -> IO ()
+
+-- | vkCmdSetEvent2 - Set an event object to signaled state
+--
+-- = Description
+--
+-- When 'cmdSetEvent2' is submitted to a queue, it defines the first half
+-- of memory dependencies defined by @pDependencyInfo@, as well as an event
+-- signal operation which sets the event to the signaled state. A memory
+-- dependency is defined between the event signal operation and commands
+-- that occur earlier in submission order.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- are defined by the union of all the memory dependencies defined by
+-- @pDependencyInfo@, and are applied to all operations that occur earlier
+-- in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers Queue family ownership transfers>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
+-- defined by @pDependencyInfo@ are also included in the first scopes.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the event signal operation, and any
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
+-- defined by @pDependencyInfo@.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- includes only
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
+--
+-- Future 'cmdWaitEvents2' commands rely on all values of each element in
+-- @pDependencyInfo@ matching exactly with those used to signal the
+-- corresponding event. 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
+-- /must/ not be used to wait on the result of a signal operation defined
+-- by 'cmdSetEvent2'.
+--
+-- Note
+--
+-- The extra information provided by 'cmdSetEvent2' compared to
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent' allows implementations
+-- to more efficiently schedule the operations required to satisfy the
+-- requested dependencies. With
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent', the full dependency
+-- information is not known until
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' is recorded, forcing
+-- implementations to insert the required operations at that point and not
+-- before.
+--
+-- If @event@ is already in the signaled state when 'cmdSetEvent2' is
+-- executed on the device, then 'cmdSetEvent2' has no effect, no event
+-- signal operation occurs, and no dependency is generated.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdSetEvent2-synchronization2-03824# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdSetEvent2-dependencyFlags-03825# The @dependencyFlags@
+--     member of @pDependencyInfo@ /must/ be @0@
+--
+-- -   #VUID-vkCmdSetEvent2-commandBuffer-03826# The current device mask of
+--     @commandBuffer@ /must/ include exactly one physical device
+--
+-- -   #VUID-vkCmdSetEvent2-srcStageMask-03827# The @srcStageMask@ member
+--     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
+--     @pImageMemoryBarriers@ members of @pDependencyInfo@ /must/ only
+--     include pipeline stages valid for the queue family that was used to
+--     create the command pool that @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdSetEvent2-dstStageMask-03828# The @dstStageMask@ member
+--     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
+--     @pImageMemoryBarriers@ members of @pDependencyInfo@ /must/ only
+--     include pipeline stages valid for the queue family that was used to
+--     create the command pool that @commandBuffer@ was allocated from
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdSetEvent2-commandBuffer-parameter# @commandBuffer@ /must/
+--     be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdSetEvent2-event-parameter# @event@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Event' handle
+--
+-- -   #VUID-vkCmdSetEvent2-pDependencyInfo-parameter# @pDependencyInfo@
+--     /must/ be a valid pointer to a valid 'DependencyInfo' structure
+--
+-- -   #VUID-vkCmdSetEvent2-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-vkCmdSetEvent2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdSetEvent2-renderpass# This command /must/ only be called
+--     outside of a render pass instance
+--
+-- -   #VUID-vkCmdSetEvent2-commonparent# Both of @commandBuffer@, and
+--     @event@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DependencyInfo',
+-- 'Vulkan.Core10.Handles.Event'
+cmdSetEvent2 :: forall io
+              . (MonadIO io)
+             => -- | @commandBuffer@ is the command buffer into which the command is
+                -- recorded.
+                CommandBuffer
+             -> -- | @event@ is the event that will be signaled.
+                Event
+             -> -- | @pDependencyInfo@ is a pointer to a 'DependencyInfo' structure defining
+                -- the first scopes of this operation.
+                DependencyInfo
+             -> io ()
+cmdSetEvent2 commandBuffer event dependencyInfo = liftIO . evalContT $ do
+  let vkCmdSetEvent2Ptr = pVkCmdSetEvent2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdSetEvent2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetEvent2 is null" Nothing Nothing
+  let vkCmdSetEvent2' = mkVkCmdSetEvent2 vkCmdSetEvent2Ptr
+  pDependencyInfo <- ContT $ withCStruct (dependencyInfo)
+  lift $ traceAroundEvent "vkCmdSetEvent2" (vkCmdSetEvent2' (commandBufferHandle (commandBuffer)) (event) pDependencyInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdResetEvent2
+  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags2 -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags2 -> IO ()
+
+-- | vkCmdResetEvent2 - Reset an event object to non-signaled state
+--
+-- = Description
+--
+-- When 'cmdResetEvent2' is submitted to a queue, it defines an execution
+-- dependency on commands that were submitted before it, and defines an
+-- event unsignal operation which resets the event to the unsignaled state.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands that occur earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- The synchronization scope is limited to operations by @stageMask@ or
+-- stages that are
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
+-- than @stageMask@.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the event unsignal operation.
+--
+-- If @event@ is already in the unsignaled state when 'cmdResetEvent2' is
+-- executed on the device, then this command has no effect, no event
+-- unsignal operation occurs, and no execution dependency is generated.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdResetEvent2-synchronization2-03829# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-03830# @stageMask@ /must/ not
+--     include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-vkCmdResetEvent2-event-03831# There /must/ be an execution
+--     dependency between 'cmdResetEvent2' and the execution of any
+--     'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' that includes
+--     @event@ in its @pEvents@ parameter
+--
+-- -   #VUID-vkCmdResetEvent2-event-03832# There /must/ be an execution
+--     dependency between 'cmdResetEvent2' and the execution of any
+--     'cmdWaitEvents2' that includes @event@ in its @pEvents@ parameter
+--
+-- -   #VUID-vkCmdResetEvent2-commandBuffer-03833# @commandBuffer@’s
+--     current device mask /must/ include exactly one physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdResetEvent2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdResetEvent2-event-parameter# @event@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Event' handle
+--
+-- -   #VUID-vkCmdResetEvent2-stageMask-parameter# @stageMask@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-vkCmdResetEvent2-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-vkCmdResetEvent2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdResetEvent2-renderpass# This command /must/ only be
+--     called outside of a render pass instance
+--
+-- -   #VUID-vkCmdResetEvent2-commonparent# Both of @commandBuffer@, and
+--     @event@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2'
+cmdResetEvent2 :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer into which the command is
+                  -- recorded.
+                  CommandBuffer
+               -> -- | @event@ is the event that will be unsignaled.
+                  Event
+               -> -- | @stageMask@ is a
+                  -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+                  -- pipeline stages used to determine the first
+                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+                  ("stageMask" ::: PipelineStageFlags2)
+               -> io ()
+cmdResetEvent2 commandBuffer event stageMask = liftIO $ do
+  let vkCmdResetEvent2Ptr = pVkCmdResetEvent2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdResetEvent2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetEvent2 is null" Nothing Nothing
+  let vkCmdResetEvent2' = mkVkCmdResetEvent2 vkCmdResetEvent2Ptr
+  traceAroundEvent "vkCmdResetEvent2" (vkCmdResetEvent2' (commandBufferHandle (commandBuffer)) (event) (stageMask))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWaitEvents2Unsafe
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfo -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfo -> IO ()
+
+foreign import ccall
+  "dynamic" mkVkCmdWaitEvents2Safe
+  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfo -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfo -> IO ()
+
+-- | cmdWaitEvents2 with selectable safeness
+cmdWaitEvents2SafeOrUnsafe :: forall io
+                            . (MonadIO io)
+                           => (FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfo -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfo -> IO ())
+                           -> -- | @commandBuffer@ is the command buffer into which the command is
+                              -- recorded.
+                              CommandBuffer
+                           -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
+                              ("events" ::: Vector Event)
+                           -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
+                              -- 'DependencyInfo' structures, defining the second
+                              -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+                              ("dependencyInfos" ::: Vector DependencyInfo)
+                           -> io ()
+cmdWaitEvents2SafeOrUnsafe mkVkCmdWaitEvents2 commandBuffer events dependencyInfos = liftIO . evalContT $ do
+  let vkCmdWaitEvents2Ptr = pVkCmdWaitEvents2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdWaitEvents2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWaitEvents2 is null" Nothing Nothing
+  let vkCmdWaitEvents2' = mkVkCmdWaitEvents2 vkCmdWaitEvents2Ptr
+  let pEventsLength = Data.Vector.length $ (events)
+  lift $ unless ((Data.Vector.length $ (dependencyInfos)) == pEventsLength) $
+    throwIO $ IOError Nothing InvalidArgument "" "pDependencyInfos and pEvents must have the same length" Nothing Nothing
+  pPEvents <- ContT $ allocaBytes @Event ((Data.Vector.length (events)) * 8)
+  lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)
+  pPDependencyInfos <- ContT $ allocaBytes @DependencyInfo ((Data.Vector.length (dependencyInfos)) * 64)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencyInfos `plusPtr` (64 * (i)) :: Ptr DependencyInfo) (e) . ($ ())) (dependencyInfos)
+  lift $ traceAroundEvent "vkCmdWaitEvents2" (vkCmdWaitEvents2' (commandBufferHandle (commandBuffer)) ((fromIntegral pEventsLength :: Word32)) (pPEvents) (pPDependencyInfos))
+  pure $ ()
+
+-- | vkCmdWaitEvents2 - Wait for one or more events
+--
+-- = Description
+--
+-- When 'cmdWaitEvents2' is submitted to a queue, it inserts memory
+-- dependencies according to the elements of @pDependencyInfos@ and each
+-- corresponding element of @pEvents@. 'cmdWaitEvents2' /must/ not be used
+-- to wait on event signal operations occurring on other queues, or signal
+-- operations executed by
+-- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- of each memory dependency defined by any element i of @pDependencyInfos@
+-- are applied to operations that occurred earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- than the last event signal operation on element i of @pEvents@.
+--
+-- Signal operations for an event at index i are only included if:
+--
+-- -   The event was signaled by a 'cmdSetEvent2' command that occurred
+--     earlier in
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+--     with a @dependencyInfo@ parameter exactly equal to the element of
+--     @pDependencyInfos@ at index i ; or
+--
+-- -   The event was created without
+--     'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT',
+--     and the first
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--     defined by the element of @pDependencyInfos@ at index i only
+--     includes host operations
+--     ('Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT').
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- of each memory dependency defined by any element i of @pDependencyInfos@
+-- are applied to operations that occurred later in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+-- than 'cmdWaitEvents2'.
+--
+-- Note
+--
+-- 'cmdWaitEvents2' is used with 'cmdSetEvent2' to define a memory
+-- dependency between two sets of action commands, roughly in the same way
+-- as pipeline barriers, but split into two commands such that work between
+-- the two /may/ execute unhindered.
+--
+-- Note
+--
+-- Applications should be careful to avoid race conditions when using
+-- events. There is no direct ordering guarantee between 'cmdSetEvent2' and
+-- 'cmdResetEvent2', 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent',
+-- or 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'. Another execution
+-- dependency (e.g. a pipeline barrier or semaphore with
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT')
+-- is needed to prevent such a race condition.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWaitEvents2-synchronization2-03836# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03837# Members of @pEvents@ /must/
+--     not have been signaled by
+--     'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03838# For any element i of
+--     @pEvents@, if that event is signaled by 'cmdSetEvent2', that
+--     command’s @dependencyInfo@ parameter /must/ be exactly equal to the
+--     ith element of @pDependencyInfos@
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03839# For any element i of
+--     @pEvents@, if that event is signaled by
+--     'Vulkan.Core10.Event.setEvent', barriers in the ith element of
+--     @pDependencyInfos@ /must/ include only host operations in their
+--     first
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03840# For any element i of
+--     @pEvents@, if barriers in the ith element of @pDependencyInfos@
+--     include only host operations, the ith element of @pEvents@ /must/ be
+--     signaled before 'cmdWaitEvents2' is executed
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03841# For any element i of
+--     @pEvents@, if barriers in the ith element of @pDependencyInfos@ do
+--     not include host operations, the ith element of @pEvents@ /must/ be
+--     signaled by a corresponding 'cmdSetEvent2' that occurred earlier in
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>
+--
+-- -   #VUID-vkCmdWaitEvents2-srcStageMask-03842# The @srcStageMask@ member
+--     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
+--     @pImageMemoryBarriers@ members of @pDependencyInfos@ /must/ either
+--     include only pipeline stages valid for the queue family that was
+--     used to create the command pool that @commandBuffer@ was allocated
+--     from, or include only
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-vkCmdWaitEvents2-dstStageMask-03843# The @dstStageMask@ member
+--     of any element of the @pMemoryBarriers@, @pBufferMemoryBarriers@, or
+--     @pImageMemoryBarriers@ members of @pDependencyInfos@ /must/ only
+--     include pipeline stages valid for the queue family that was used to
+--     create the command pool that @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdWaitEvents2-dependencyFlags-03844# The @dependencyFlags@
+--     member of any element of @pDependencyInfo@ /must/ be @0@
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-03845# If @pEvents@ includes one or
+--     more events that will be signaled by 'Vulkan.Core10.Event.setEvent'
+--     after @commandBuffer@ has been submitted to a queue, then
+--     'cmdWaitEvents2' /must/ not be called inside a render pass instance
+--
+-- -   #VUID-vkCmdWaitEvents2-commandBuffer-03846# @commandBuffer@’s
+--     current device mask /must/ include exactly one physical device
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWaitEvents2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWaitEvents2-pEvents-parameter# @pEvents@ /must/ be a
+--     valid pointer to an array of @eventCount@ valid
+--     'Vulkan.Core10.Handles.Event' handles
+--
+-- -   #VUID-vkCmdWaitEvents2-pDependencyInfos-parameter#
+--     @pDependencyInfos@ /must/ be a valid pointer to an array of
+--     @eventCount@ valid 'DependencyInfo' structures
+--
+-- -   #VUID-vkCmdWaitEvents2-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-vkCmdWaitEvents2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support graphics, or compute operations
+--
+-- -   #VUID-vkCmdWaitEvents2-eventCount-arraylength# @eventCount@ /must/
+--     be greater than @0@
+--
+-- -   #VUID-vkCmdWaitEvents2-commonparent# Both of @commandBuffer@, and
+--     the elements of @pEvents@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DependencyInfo',
+-- 'Vulkan.Core10.Handles.Event'
+cmdWaitEvents2 :: forall io
+                . (MonadIO io)
+               => -- | @commandBuffer@ is the command buffer into which the command is
+                  -- recorded.
+                  CommandBuffer
+               -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
+                  ("events" ::: Vector Event)
+               -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
+                  -- 'DependencyInfo' structures, defining the second
+                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+                  ("dependencyInfos" ::: Vector DependencyInfo)
+               -> io ()
+cmdWaitEvents2 = cmdWaitEvents2SafeOrUnsafe mkVkCmdWaitEvents2Unsafe
+
+-- | A variant of 'cmdWaitEvents2' which makes a *safe* FFI call
+cmdWaitEvents2Safe :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command is
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
+                      ("events" ::: Vector Event)
+                   -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
+                      -- 'DependencyInfo' structures, defining the second
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
+                      ("dependencyInfos" ::: Vector DependencyInfo)
+                   -> io ()
+cmdWaitEvents2Safe = cmdWaitEvents2SafeOrUnsafe mkVkCmdWaitEvents2Safe
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdPipelineBarrier2
+  :: FunPtr (Ptr CommandBuffer_T -> Ptr DependencyInfo -> IO ()) -> Ptr CommandBuffer_T -> Ptr DependencyInfo -> IO ()
+
+-- | vkCmdPipelineBarrier2 - Insert a memory dependency
+--
+-- = Description
+--
+-- When 'cmdPipelineBarrier2' is submitted to a queue, it defines memory
+-- dependencies between commands that were submitted before it, and those
+-- submitted after it.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- of each memory dependency defined by @pDependencyInfo@ are applied to
+-- operations that occurred earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- of each memory dependency defined by @pDependencyInfo@ are applied to
+-- operations that occurred later in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+--
+-- If 'cmdPipelineBarrier2' is recorded within a render pass instance, the
+-- synchronization scopes are
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies limited to operations within the same subpass>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdPipelineBarrier2-pDependencies-02285# If
+--     'cmdPipelineBarrier2' is called within a render pass instance, the
+--     render pass /must/ have been created with at least one
+--     'Vulkan.Core10.Pass.SubpassDependency' instance in
+--     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that
+--     expresses a dependency from the current subpass to itself, with
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scopes>
+--     and
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+--     that are all supersets of the scopes defined in this command
+--
+-- -   #VUID-vkCmdPipelineBarrier2-bufferMemoryBarrierCount-01178# If
+--     'cmdPipelineBarrier2' is called within a render pass instance, it
+--     /must/ not include any buffer memory barriers
+--
+-- -   #VUID-vkCmdPipelineBarrier2-image-04073# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance, the @image@ member of any
+--     image memory barrier included in this command /must/ be an
+--     attachment used in the current subpass both as an input attachment,
+--     and as either a color or depth\/stencil attachment
+--
+-- -   #VUID-vkCmdPipelineBarrier2-oldLayout-01181# If
+--     'cmdPipelineBarrier2' is called within a render pass instance, the
+--     @oldLayout@ and @newLayout@ members of any image memory barrier
+--     included in this command /must/ be equal
+--
+-- -   #VUID-vkCmdPipelineBarrier2-srcQueueFamilyIndex-01182# If
+--     'cmdPipelineBarrier2' is called within a render pass instance, the
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any image
+--     memory barrier included in this command /must/ be equal
+--
+-- -   #VUID-vkCmdPipelineBarrier2-dependencyFlags-01186# If
+--     'cmdPipelineBarrier2' is called outside of a render pass instance,
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
+--     /must/ not be included in the dependency flags
+--
+-- -   #VUID-vkCmdPipelineBarrier2-None-06191# If 'cmdPipelineBarrier2' is
+--     called within a render pass instance, the render pass /must/ not
+--     have been started with
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
+--
+-- -   #VUID-vkCmdPipelineBarrier2-synchronization2-03848# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdPipelineBarrier2-srcStageMask-03849# The @srcStageMask@
+--     member of any element of the @pMemoryBarriers@,
+--     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
+--     @pDependencyInfo@ /must/ only include pipeline stages valid for the
+--     queue family that was used to create the command pool that
+--     @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdPipelineBarrier2-dstStageMask-03850# The @dstStageMask@
+--     member of any element of the @pMemoryBarriers@,
+--     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
+--     @pDependencyInfo@ /must/ only include pipeline stages valid for the
+--     queue family that was used to create the command pool that
+--     @commandBuffer@ was allocated from
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdPipelineBarrier2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdPipelineBarrier2-pDependencyInfo-parameter#
+--     @pDependencyInfo@ /must/ be a valid pointer to a valid
+--     'DependencyInfo' structure
+--
+-- -   #VUID-vkCmdPipelineBarrier2-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-vkCmdPipelineBarrier2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- == Host Synchronization
+--
+-- -   Host access to @commandBuffer@ /must/ be externally synchronized
+--
+-- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
+--     @commandBuffer@ was allocated from /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer', 'DependencyInfo'
+cmdPipelineBarrier2 :: forall io
+                     . (MonadIO io)
+                    => -- | @commandBuffer@ is the command buffer into which the command is
+                       -- recorded.
+                       CommandBuffer
+                    -> -- | @pDependencyInfo@ is a pointer to a 'DependencyInfo' structure defining
+                       -- the scopes of this operation.
+                       DependencyInfo
+                    -> io ()
+cmdPipelineBarrier2 commandBuffer dependencyInfo = liftIO . evalContT $ do
+  let vkCmdPipelineBarrier2Ptr = pVkCmdPipelineBarrier2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  lift $ unless (vkCmdPipelineBarrier2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPipelineBarrier2 is null" Nothing Nothing
+  let vkCmdPipelineBarrier2' = mkVkCmdPipelineBarrier2 vkCmdPipelineBarrier2Ptr
+  pDependencyInfo <- ContT $ withCStruct (dependencyInfo)
+  lift $ traceAroundEvent "vkCmdPipelineBarrier2" (vkCmdPipelineBarrier2' (commandBufferHandle (commandBuffer)) pDependencyInfo)
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkQueueSubmit2
+  :: FunPtr (Ptr Queue_T -> Word32 -> Ptr (SomeStruct SubmitInfo2) -> Fence -> IO Result) -> Ptr Queue_T -> Word32 -> Ptr (SomeStruct SubmitInfo2) -> Fence -> IO Result
+
+-- | vkQueueSubmit2 - Submits command buffers to a queue
+--
+-- = Description
+--
+-- 'queueSubmit2' is a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
+-- with each batch defined by an element of @pSubmits@.
+--
+-- Semaphore operations submitted with 'queueSubmit2' have additional
+-- ordering constraints compared to other submission commands, with
+-- dependencies involving previous and subsequent queue operations.
+-- Information about these additional constraints can be found in the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores semaphore>
+-- section of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
+--
+-- If any command buffer submitted to this queue is in the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>,
+-- it is moved to the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.
+-- Once execution of all submissions of a command buffer complete, it moves
+-- from the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
+-- back to the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
+-- If a command buffer was recorded with the
+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT'
+-- flag, it instead moves back to the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state>.
+--
+-- If 'queueSubmit2' fails, it /may/ return
+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or
+-- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. If it does, the
+-- implementation /must/ ensure that the state and contents of any
+-- resources or synchronization primitives referenced by the submitted
+-- command buffers and any semaphores referenced by @pSubmits@ is
+-- unaffected by the call or its failure. If 'queueSubmit2' fails in such a
+-- way that the implementation is unable to make that guarantee, the
+-- implementation /must/ return
+-- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'. See
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkQueueSubmit2-fence-04894# If @fence@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be
+--     unsignaled
+--
+-- -   #VUID-vkQueueSubmit2-fence-04895# If @fence@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ not be
+--     associated with any other queue command that has not yet completed
+--     execution on that queue
+--
+-- -   #VUID-vkQueueSubmit2-synchronization2-03866# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03867# If a command recorded into
+--     the @commandBuffer@ member of any element of the
+--     @pCommandBufferInfos@ member of any element of @pSubmits@ referenced
+--     an 'Vulkan.Core10.Handles.Event', that event /must/ not be
+--     referenced by a command that has been submitted to another queue and
+--     is still in the /pending state/
+--
+-- -   #VUID-vkQueueSubmit2-semaphore-03868# The @semaphore@ member of any
+--     binary semaphore element of the @pSignalSemaphoreInfos@ member of
+--     any element of @pSubmits@ /must/ be unsignaled when the semaphore
+--     signal operation it defines is executed on the device
+--
+-- -   #VUID-vkQueueSubmit2-stageMask-03869# The @stageMask@ member of any
+--     element of the @pSignalSemaphoreInfos@ member of any element of
+--     @pSubmits@ /must/ only include pipeline stages that are supported by
+--     the queue family which @queue@ belongs to
+--
+-- -   #VUID-vkQueueSubmit2-stageMask-03870# The @stageMask@ member of any
+--     element of the @pWaitSemaphoreInfos@ member of any element of
+--     @pSubmits@ /must/ only include pipeline stages that are supported by
+--     the queue family which @queue@ belongs to
+--
+-- -   #VUID-vkQueueSubmit2-semaphore-03871# When a semaphore wait
+--     operation for a binary semaphore is executed, as defined by the
+--     @semaphore@ member of any element of the @pWaitSemaphoreInfos@
+--     member of any element of @pSubmits@, there /must/ be no other queues
+--     waiting on the same semaphore
+--
+-- -   #VUID-vkQueueSubmit2-semaphore-03872# The @semaphore@ member of any
+--     element of the @pWaitSemaphoreInfos@ member of any element of
+--     @pSubmits@ /must/ be semaphores that are signaled, or have
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
+--     previously submitted for execution
+--
+-- -   #VUID-vkQueueSubmit2-semaphore-03873# Any @semaphore@ member of any
+--     element of the @pWaitSemaphoreInfos@ member of any element of
+--     @pSubmits@ that was created with a
+--     'Vulkan.Extensions.VK_KHR_timeline_semaphore.SemaphoreTypeKHR' of
+--     'Vulkan.Extensions.VK_KHR_timeline_semaphore.SEMAPHORE_TYPE_BINARY_KHR'
+--     /must/ reference a semaphore signal operation that has been
+--     submitted for execution and any semaphore signal operations on which
+--     it depends (if any) /must/ have also been submitted for execution
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03874# The @commandBuffer@ member
+--     of any element of the @pCommandBufferInfos@ member of any element of
+--     @pSubmits@ /must/ be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03875# If a command recorded into
+--     the @commandBuffer@ member of any element of the
+--     @pCommandBufferInfos@ member of any element of @pSubmits@ was not
+--     recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',
+--     it /must/ not be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03876# Any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
+--     into the @commandBuffer@ member of any element of the
+--     @pCommandBufferInfos@ member of any element of @pSubmits@ /must/ be
+--     in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03877# If any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
+--     into the @commandBuffer@ member of any element of the
+--     @pCommandBufferInfos@ member of any element of @pSubmits@ was not
+--     recorded with the
+--     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',
+--     it /must/ not be in the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03878# The @commandBuffer@ member
+--     of any element of the @pCommandBufferInfos@ member of any element of
+--     @pSubmits@ /must/ have been allocated from a
+--     'Vulkan.Core10.Handles.CommandPool' that was created for the same
+--     queue family @queue@ belongs to
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03879# If a command recorded into
+--     the @commandBuffer@ member of any element of the
+--     @pCommandBufferInfos@ member of any element of @pSubmits@ includes a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Transfer Acquire Operation>,
+--     there /must/ exist a previously submitted
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release Queue Family Transfer Release Operation>
+--     on a queue in the queue family identified by the acquire operation,
+--     with parameters matching the acquire operation as defined in the
+--     definition of such
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,
+--     and which happens before the acquire operation
+--
+-- -   #VUID-vkQueueSubmit2-commandBuffer-03880# If a command recorded into
+--     the @commandBuffer@ member of any element of the
+--     @pCommandBufferInfos@ member of any element of @pSubmits@ was a
+--     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' whose
+--     @queryPool@ was created with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
+--     the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#profiling-lock profiling lock>
+--     /must/ have been held continuously on the
+--     'Vulkan.Core10.Handles.Device' that @queue@ was retrieved from,
+--     throughout recording of those command buffers
+--
+-- -   #VUID-vkQueueSubmit2-queue-06447# If @queue@ was not created with
+--     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT',
+--     the @flags@ member of any element of @pSubmits@ /must/ not include
+--     'Vulkan.Core13.Enums.SubmitFlagBits.SUBMIT_PROTECTED_BIT_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkQueueSubmit2-queue-parameter# @queue@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Queue' handle
+--
+-- -   #VUID-vkQueueSubmit2-pSubmits-parameter# If @submitCount@ is not
+--     @0@, @pSubmits@ /must/ be a valid pointer to an array of
+--     @submitCount@ valid 'SubmitInfo2' structures
+--
+-- -   #VUID-vkQueueSubmit2-fence-parameter# If @fence@ is not
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be a valid
+--     'Vulkan.Core10.Handles.Fence' handle
+--
+-- -   #VUID-vkQueueSubmit2-commonparent# Both of @fence@, and @queue@ that
+--     are valid handles of non-ignored parameters /must/ have been
+--     created, allocated, or retrieved from the same
+--     'Vulkan.Core10.Handles.Device'
+--
+-- == Host Synchronization
+--
+-- -   Host access to @queue@ /must/ be externally synchronized
+--
+-- -   Host access to @fence@ /must/ be externally synchronized
+--
+-- == Command Properties
+--
+-- \'
+--
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+-- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | -                                                                                                                          | -                                                                                                                      | Any                                                                                                                   |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- == 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'
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.Fence', 'Vulkan.Core10.Handles.Queue',
+-- 'SubmitInfo2'
+queueSubmit2 :: forall io
+              . (MonadIO io)
+             => -- | @queue@ is the queue that the command buffers will be submitted to.
+                Queue
+             -> -- | @pSubmits@ is a pointer to an array of 'SubmitInfo2' structures, each
+                -- specifying a command buffer submission batch.
+                ("submits" ::: Vector (SomeStruct SubmitInfo2))
+             -> -- | @fence@ is an /optional/ handle to a fence to be signaled once all
+                -- submitted command buffers have completed execution. If @fence@ is not
+                -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it defines a
+                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
+                Fence
+             -> io ()
+queueSubmit2 queue submits fence = liftIO . evalContT $ do
+  let vkQueueSubmit2Ptr = pVkQueueSubmit2 (case queue of Queue{deviceCmds} -> deviceCmds)
+  lift $ unless (vkQueueSubmit2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkQueueSubmit2 is null" Nothing Nothing
+  let vkQueueSubmit2' = mkVkQueueSubmit2 vkQueueSubmit2Ptr
+  pPSubmits <- ContT $ allocaBytes @(SubmitInfo2 _) ((Data.Vector.length (submits)) * 64)
+  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPSubmits `plusPtr` (64 * (i)) :: Ptr (SubmitInfo2 _))) (e) . ($ ())) (submits)
+  r <- lift $ traceAroundEvent "vkQueueSubmit2" (vkQueueSubmit2' (queueHandle (queue)) ((fromIntegral (Data.Vector.length $ (submits)) :: Word32)) (forgetExtensions (pPSubmits)) (fence))
+  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteTimestamp2
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2 -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags2 -> QueryPool -> Word32 -> IO ()
+
+-- | vkCmdWriteTimestamp2 - Write a device timestamp into a query object
+--
+-- = Description
+--
+-- When 'cmdWriteTimestamp2' is submitted to a queue, it defines an
+-- execution dependency on commands that were submitted before it, and
+-- writes a timestamp to a query pool.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes all commands that occur earlier in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-submission-order submission order>.
+-- The synchronization scope is limited to operations on the pipeline stage
+-- specified by @stage@.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- includes only the timestamp write operation.
+--
+-- When the timestamp value is written, the availability status of the
+-- query is set to available.
+--
+-- Note
+--
+-- If an implementation is unable to detect completion and latch the timer
+-- at any specific stage of the pipeline, it /may/ instead do so at any
+-- logically later stage.
+--
+-- Comparisons between timestamps are not meaningful if the timestamps are
+-- written by commands submitted to different queues.
+--
+-- Note
+--
+-- An example of such a comparison is subtracting an older timestamp from a
+-- newer one to determine the execution time of a sequence of commands.
+--
+-- If 'cmdWriteTimestamp2' is called while executing a render pass instance
+-- that has multiview enabled, the timestamp uses N consecutive query
+-- indices in the query pool (starting at @query@) where N is the number of
+-- bits set in the view mask of the subpass the command is executed in. The
+-- resulting query values are determined by an implementation-dependent
+-- choice of one of the following behaviors:
+--
+-- -   The first query is a timestamp value and (if more than one bit is
+--     set in the view mask) zero is written to the remaining queries. If
+--     two timestamps are written in the same subpass, the sum of the
+--     execution time of all views between those commands is the difference
+--     between the first query written by each command.
+--
+-- -   All N queries are timestamp values. If two timestamps are written in
+--     the same subpass, the sum of the execution time of all views between
+--     those commands is the sum of the difference between corresponding
+--     queries written by each command. The difference between
+--     corresponding queries /may/ be the execution time of a single view.
+--
+-- In either case, the application /can/ sum the differences between all N
+-- queries to determine the total execution time.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-synchronization2-03858# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03859# @stage@ /must/ only include
+--     a single pipeline stage
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-03860# @stage@ /must/ only include
+--     stages valid for the queue family that was used to create the
+--     command pool that @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdWriteTimestamp2-queryPool-03861# @queryPool@ /must/ have
+--     been created with a @queryType@ of
+--     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
+--
+-- -   #VUID-vkCmdWriteTimestamp2-queryPool-03862# The query identified by
+--     @queryPool@ and @query@ /must/ be /unavailable/
+--
+-- -   #VUID-vkCmdWriteTimestamp2-timestampValidBits-03863# The command
+--     pool’s queue family /must/ support a non-zero @timestampValidBits@
+--
+-- -   #VUID-vkCmdWriteTimestamp2-query-04903# @query@ /must/ be less than
+--     the number of queries in @queryPool@
+--
+-- -   #VUID-vkCmdWriteTimestamp2-None-03864# All queries used by the
+--     command /must/ be unavailable
+--
+-- -   #VUID-vkCmdWriteTimestamp2-query-03865# If 'cmdWriteTimestamp2' is
+--     called within a render pass instance, the sum of @query@ and the
+--     number of bits set in the current subpass’s view mask /must/ be less
+--     than or equal to the number of queries in @queryPool@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWriteTimestamp2-commandBuffer-parameter# @commandBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWriteTimestamp2-stage-parameter# @stage@ /must/ be a
+--     valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-vkCmdWriteTimestamp2-queryPool-parameter# @queryPool@ /must/
+--     be a valid 'Vulkan.Core10.Handles.QueryPool' handle
+--
+-- -   #VUID-vkCmdWriteTimestamp2-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-vkCmdWriteTimestamp2-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, compute, decode,
+--     or encode operations
+--
+-- -   #VUID-vkCmdWriteTimestamp2-commonparent# Both of @commandBuffer@,
+--     and @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
+-- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Handles.QueryPool'
+cmdWriteTimestamp2 :: forall io
+                    . (MonadIO io)
+                   => -- | @commandBuffer@ is the command buffer into which the command will be
+                      -- recorded.
+                      CommandBuffer
+                   -> -- | @stage@ specifies a stage of the pipeline.
+                      PipelineStageFlags2
+                   -> -- | @queryPool@ is the query pool that will manage the timestamp.
+                      QueryPool
+                   -> -- | @query@ is the query within the query pool that will contain the
+                      -- timestamp.
+                      ("query" ::: Word32)
+                   -> io ()
+cmdWriteTimestamp2 commandBuffer stage queryPool query = liftIO $ do
+  let vkCmdWriteTimestamp2Ptr = pVkCmdWriteTimestamp2 (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdWriteTimestamp2Ptr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteTimestamp2 is null" Nothing Nothing
+  let vkCmdWriteTimestamp2' = mkVkCmdWriteTimestamp2 vkCmdWriteTimestamp2Ptr
+  traceAroundEvent "vkCmdWriteTimestamp2" (vkCmdWriteTimestamp2' (commandBufferHandle (commandBuffer)) (stage) (queryPool) (query))
+  pure $ ()
+
+
+-- | VkMemoryBarrier2 - Structure specifying a global memory barrier
+--
+-- = Description
+--
+-- This structure defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
+-- affecting all device memory.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by @srcStageMask@ and @srcAccessMask@.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by @dstStageMask@ and @dstAccessMask@.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03900# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03901# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDEX_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03902# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03903# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03904# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03905# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03906# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03907# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03908# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03909# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03910# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03911# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03912# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03913# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03914# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03915# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03916# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03917# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03918# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03919# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03920# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-04747# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03922# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03923# If @srcAccessMask@
+--     includes
+--     'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-04994# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03924# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03925# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03926# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03927# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-03928# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-06256# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     is not enabled and @srcAccessMask@ includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ not include any of the
+--     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03900# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03901# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDEX_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03902# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03903# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03904# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03905# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03906# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03907# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03908# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03909# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03910# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03911# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03912# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03913# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03914# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03915# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03916# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03917# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03918# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03919# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03920# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-04747# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03922# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03923# If @dstAccessMask@
+--     includes
+--     'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-04994# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03924# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03925# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03926# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03927# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-03928# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-06256# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     is not enabled and @dstAccessMask@ includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ not include any of the
+--     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMemoryBarrier2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_2'
+--
+-- -   #VUID-VkMemoryBarrier2-srcStageMask-parameter# @srcStageMask@ /must/
+--     be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkMemoryBarrier2-srcAccessMask-parameter# @srcAccessMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- -   #VUID-VkMemoryBarrier2-dstStageMask-parameter# @dstStageMask@ /must/
+--     be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkMemoryBarrier2-dstAccessMask-parameter# @dstAccessMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2', 'DependencyInfo',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data MemoryBarrier2 = MemoryBarrier2
+  { -- | @srcStageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
+    srcStageMask :: PipelineStageFlags2
+  , -- | @srcAccessMask@ is a 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'
+    -- mask of access flags to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
+    srcAccessMask :: AccessFlags2
+  , -- | @dstStageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
+    dstStageMask :: PipelineStageFlags2
+  , -- | @dstAccessMask@ is a 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'
+    -- mask of access flags to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
+    dstAccessMask :: AccessFlags2
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MemoryBarrier2)
+#endif
+deriving instance Show MemoryBarrier2
+
+instance ToCStruct MemoryBarrier2 where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MemoryBarrier2{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2)) (srcStageMask)
+    poke ((p `plusPtr` 24 :: Ptr AccessFlags2)) (srcAccessMask)
+    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2)) (dstStageMask)
+    poke ((p `plusPtr` 40 :: Ptr AccessFlags2)) (dstAccessMask)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct MemoryBarrier2 where
+  peekCStruct p = do
+    srcStageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 16 :: Ptr PipelineStageFlags2))
+    srcAccessMask <- peek @AccessFlags2 ((p `plusPtr` 24 :: Ptr AccessFlags2))
+    dstStageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 32 :: Ptr PipelineStageFlags2))
+    dstAccessMask <- peek @AccessFlags2 ((p `plusPtr` 40 :: Ptr AccessFlags2))
+    pure $ MemoryBarrier2
+             srcStageMask srcAccessMask dstStageMask dstAccessMask
+
+instance Storable MemoryBarrier2 where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MemoryBarrier2 where
+  zero = MemoryBarrier2
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkImageMemoryBarrier2 - Structure specifying an image memory barrier
+--
+-- = Description
+--
+-- This structure defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
+-- limited to an image subresource range, and /can/ define a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
+-- for that subresource range.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by @srcStageMask@ and @srcAccessMask@.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by @dstStageMask@ and @dstAccessMask@.
+--
+-- Both
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+-- are limited to only memory accesses to @image@ in the subresource range
+-- defined by @subresourceRange@.
+--
+-- If @image@ was created with
+-- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+-- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, this memory
+-- barrier defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>.
+-- When executed on a queue in the family identified by
+-- @srcQueueFamilyIndex@, this barrier defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- for the specified image subresource range, and the second
+-- synchronization and access scopes do not synchronize operations on that
+-- queue. When executed on a queue in the family identified by
+-- @dstQueueFamilyIndex@, this barrier defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- for the specified image subresource range, and the first synchronization
+-- and access scopes do not synchronize operations on that queue.
+--
+-- A
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
+-- is also defined if the values are not equal, and either is one of the
+-- special queue family values reserved for external memory ownership
+-- transfers, as described in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers>.
+-- A
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- is defined when @dstQueueFamilyIndex@ is one of those values, and a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- is defined when @srcQueueFamilyIndex@ is one of those values.
+--
+-- If @oldLayout@ is not equal to @newLayout@, then the memory barrier
+-- defines an
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
+-- for the specified image subresource range. If this memory barrier
+-- defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>,
+-- the layout transition is only executed once between the queues.
+--
+-- Note
+--
+-- When the old and new layout are equal, the layout values are ignored -
+-- data is preserved no matter what values are specified, or what layout
+-- the image is currently in.
+--
+-- If @image@ has a multi-planar format and the image is /disjoint/, then
+-- including
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' in the
+-- @aspectMask@ member of @subresourceRange@ is equivalent to including
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', and
+-- (for three-plane formats only)
+-- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03900# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03901# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDEX_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03902# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03903# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03904# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03905# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03906# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03907# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03908# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03909# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03910# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03911# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03912# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03913# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03914# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03915# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03916# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03917# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03918# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03919# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03920# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04747# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03922# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03923# If @srcAccessMask@
+--     includes
+--     'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-04994# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03924# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03925# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03926# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03927# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-03928# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-06256# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     is not enabled and @srcAccessMask@ includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ not include any of the
+--     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03900# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03901# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDEX_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03902# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03903# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03904# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03905# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03906# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03907# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03908# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03909# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03910# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03911# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03912# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03913# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03914# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03915# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03916# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03917# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03918# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03919# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03920# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04747# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03922# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03923# If @dstAccessMask@
+--     includes
+--     'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-04994# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03924# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03925# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03926# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03927# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-03928# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-06256# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     is not enabled and @dstAccessMask@ includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ not include any of the
+--     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkImageMemoryBarrier2-subresourceRange-01486#
+--     @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
+--     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
+--     created
+--
+-- -   #VUID-VkImageMemoryBarrier2-subresourceRange-01724# If
+--     @subresourceRange.levelCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',
+--     @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@
+--     /must/ be less than or equal to the @mipLevels@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-VkImageMemoryBarrier2-subresourceRange-01488#
+--     @subresourceRange.baseArrayLayer@ /must/ be less than the
+--     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
+--     when @image@ was created
+--
+-- -   #VUID-VkImageMemoryBarrier2-subresourceRange-01725# If
+--     @subresourceRange.layerCount@ is not
+--     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
+--     @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@
+--     /must/ be less than or equal to the @arrayLayers@ specified in
+--     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-01932# If @image@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01208# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01209# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01210# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01211# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01212# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01213# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01197# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     @oldLayout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or the
+--     current layout of the image subresources affected by the barrier
+--
+-- -   #VUID-VkImageMemoryBarrier2-newLayout-01198# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     @newLayout@ /must/ not be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01658# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-01659# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04065# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with at least one of
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04066# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04067# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
+--     then @image@ /must/ have been created with at least one of
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04068# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--     set
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03938# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL',
+--     @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
+--     or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03939# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL',
+--     @image@ /must/ have been created with at least one of
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-02088# If
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     and @oldLayout@ or @newLayout@ is
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--     then @image@ /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     set
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-01671# If @image@ has a
+--     single-plane color format or is not /disjoint/, then the
+--     @aspectMask@ member of @subresourceRange@ /must/ be
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-01672# If @image@ has a
+--     multi-planar format and the image is /disjoint/, then the
+--     @aspectMask@ member of @subresourceRange@ /must/ include either at
+--     least one of
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
+--     and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';
+--     or /must/ include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-01673# If @image@ has a
+--     multi-planar format with only two planes, then the @aspectMask@
+--     member of @subresourceRange@ /must/ not include
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-03319# If @image@ has a
+--     depth\/stencil format with both depth and stencil and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     feature is enabled, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ include either or both
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-03320# If @image@ has a
+--     depth\/stencil format with both depth and stencil and the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
+--     feature is not enabled, then the @aspectMask@ member of
+--     @subresourceRange@ /must/ include both
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
+--     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04070# If
+--     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
+--     least one /must/ not be a special queue family reserved for external
+--     memory ownership transfers, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-04071# If @image@ was created with
+--     a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
+--     special queue family values reserved for external memory transfers,
+--     the other /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-04072# If @image@ was created with
+--     a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ both be valid
+--     queue families, or one of the special queue family values reserved
+--     for external memory transfers, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03854# If either
+--     @srcStageMask@ or @dstStageMask@ includes
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT',
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ be equal
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-03855# If @srcStageMask@
+--     includes
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT',
+--     and @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
+--     or @oldLayout@ and @newLayout@ define an
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
+--     @oldLayout@ /must/ be one of
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED',
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkImageMemoryBarrier2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2'
+--
+-- -   #VUID-VkImageMemoryBarrier2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcStageMask-parameter# @srcStageMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkImageMemoryBarrier2-srcAccessMask-parameter# @srcAccessMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstStageMask-parameter# @dstStageMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkImageMemoryBarrier2-dstAccessMask-parameter# @dstAccessMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- -   #VUID-VkImageMemoryBarrier2-oldLayout-parameter# @oldLayout@ /must/
+--     be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkImageMemoryBarrier2-newLayout-parameter# @newLayout@ /must/
+--     be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- -   #VUID-VkImageMemoryBarrier2-image-parameter# @image@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Image' handle
+--
+-- -   #VUID-VkImageMemoryBarrier2-subresourceRange-parameter#
+--     @subresourceRange@ /must/ be a valid
+--     'Vulkan.Core10.ImageView.ImageSubresourceRange' structure
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2', 'DependencyInfo',
+-- 'Vulkan.Core10.Handles.Image',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.ImageView.ImageSubresourceRange',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data ImageMemoryBarrier2 (es :: [Type]) = ImageMemoryBarrier2
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @srcStageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
+    srcStageMask :: PipelineStageFlags2
+  , -- | @srcAccessMask@ is a 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'
+    -- mask of access flags to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
+    srcAccessMask :: AccessFlags2
+  , -- | @dstStageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
+    dstStageMask :: PipelineStageFlags2
+  , -- | @dstAccessMask@ is a 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'
+    -- mask of access flags to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
+    dstAccessMask :: AccessFlags2
+  , -- | @oldLayout@ is the old layout in an
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    oldLayout :: ImageLayout
+  , -- | @newLayout@ is the new layout in an
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
+    newLayout :: ImageLayout
+  , -- | @srcQueueFamilyIndex@ is the source queue family for a
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    srcQueueFamilyIndex :: Word32
+  , -- | @dstQueueFamilyIndex@ is the destination queue family for a
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    dstQueueFamilyIndex :: Word32
+  , -- | @image@ is a handle to the image affected by this barrier.
+    image :: Image
+  , -- | @subresourceRange@ describes the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views image subresource range>
+    -- within @image@ that is affected by this barrier.
+    subresourceRange :: ImageSubresourceRange
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (ImageMemoryBarrier2 (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (ImageMemoryBarrier2 es)
+
+instance Extensible ImageMemoryBarrier2 where
+  extensibleTypeName = "ImageMemoryBarrier2"
+  setNext ImageMemoryBarrier2{..} next' = ImageMemoryBarrier2{next = next', ..}
+  getNext ImageMemoryBarrier2{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageMemoryBarrier2 e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @SampleLocationsInfoEXT = Just f
+    | otherwise = Nothing
+
+instance (Extendss ImageMemoryBarrier2 es, PokeChain es) => ToCStruct (ImageMemoryBarrier2 es) where
+  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p ImageMemoryBarrier2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2)) (srcStageMask)
+    lift $ poke ((p `plusPtr` 24 :: Ptr AccessFlags2)) (srcAccessMask)
+    lift $ poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2)) (dstStageMask)
+    lift $ poke ((p `plusPtr` 40 :: Ptr AccessFlags2)) (dstAccessMask)
+    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (oldLayout)
+    lift $ poke ((p `plusPtr` 52 :: Ptr ImageLayout)) (newLayout)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (srcQueueFamilyIndex)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (dstQueueFamilyIndex)
+    lift $ poke ((p `plusPtr` 64 :: Ptr Image)) (image)
+    lift $ poke ((p `plusPtr` 72 :: Ptr ImageSubresourceRange)) (subresourceRange)
+    lift $ f
+  cStructSize = 96
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (zero)
+    lift $ poke ((p `plusPtr` 52 :: Ptr ImageLayout)) (zero)
+    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)
+    lift $ poke ((p `plusPtr` 64 :: Ptr Image)) (zero)
+    lift $ poke ((p `plusPtr` 72 :: Ptr ImageSubresourceRange)) (zero)
+    lift $ f
+
+instance (Extendss ImageMemoryBarrier2 es, PeekChain es) => FromCStruct (ImageMemoryBarrier2 es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    srcStageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 16 :: Ptr PipelineStageFlags2))
+    srcAccessMask <- peek @AccessFlags2 ((p `plusPtr` 24 :: Ptr AccessFlags2))
+    dstStageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 32 :: Ptr PipelineStageFlags2))
+    dstAccessMask <- peek @AccessFlags2 ((p `plusPtr` 40 :: Ptr AccessFlags2))
+    oldLayout <- peek @ImageLayout ((p `plusPtr` 48 :: Ptr ImageLayout))
+    newLayout <- peek @ImageLayout ((p `plusPtr` 52 :: Ptr ImageLayout))
+    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
+    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))
+    image <- peek @Image ((p `plusPtr` 64 :: Ptr Image))
+    subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 72 :: Ptr ImageSubresourceRange))
+    pure $ ImageMemoryBarrier2
+             next srcStageMask srcAccessMask dstStageMask dstAccessMask oldLayout newLayout srcQueueFamilyIndex dstQueueFamilyIndex image subresourceRange
+
+instance es ~ '[] => Zero (ImageMemoryBarrier2 es) where
+  zero = ImageMemoryBarrier2
+           ()
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkBufferMemoryBarrier2 - Structure specifying a buffer memory barrier
+--
+-- = Description
+--
+-- This structure defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
+-- limited to a range of a buffer, and /can/ define a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
+-- for that range.
+--
+-- The first
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by @srcStageMask@ and @srcAccessMask@.
+--
+-- The second
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
+-- described by this structure include only operations and memory accesses
+-- specified by @dstStageMask@ and @dstAccessMask@.
+--
+-- Both
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
+-- are limited to only memory accesses to @buffer@ in the range defined by
+-- @offset@ and @size@.
+--
+-- If @buffer@ was created with
+-- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+-- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, this memory
+-- barrier defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>.
+-- When executed on a queue in the family identified by
+-- @srcQueueFamilyIndex@, this barrier defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- for the specified buffer range, and the second synchronization and
+-- access scopes do not synchronize operations on that queue. When executed
+-- on a queue in the family identified by @dstQueueFamilyIndex@, this
+-- barrier defines a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- for the specified buffer range, and the first synchronization and access
+-- scopes do not synchronize operations on that queue.
+--
+-- A
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
+-- is also defined if the values are not equal, and either is one of the
+-- special queue family values reserved for external memory ownership
+-- transfers, as described in
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers>.
+-- A
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
+-- is defined when @dstQueueFamilyIndex@ is one of those values, and a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
+-- is defined when @srcQueueFamilyIndex@ is one of those values.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @srcStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03900# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03901# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDEX_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03902# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03903# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03904# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03905# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03906# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03907# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03908# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03909# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03910# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03911# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03912# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03913# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03914# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03915# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03916# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03917# If @srcAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03918# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03919# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03920# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04747# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03922# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03923# If @srcAccessMask@
+--     includes
+--     'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-04994# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03924# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03925# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03926# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03927# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-03928# If @srcAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
+--     @srcStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-06256# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     is not enabled and @srcAccessMask@ includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @srcStageMask@ /must/ not include any of the
+--     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @dstStageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03900# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDIRECT_COMMAND_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03901# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INDEX_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INDEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03902# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_VERTEX_INPUT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03903# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INPUT_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03904# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_UNIFORM_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03905# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_SAMPLED_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03906# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_READ_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03907# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_STORAGE_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03908# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03909# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_SHADER_WRITE_BIT',
+--     @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 the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03910# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03911# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03912# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03913# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03914# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03915# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFER_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COPY_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_BLIT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RESOLVE_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CLEAR_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_TRANSFER_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03916# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_READ_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03917# If @dstAccessMask@
+--     includes 'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_HOST_WRITE_BIT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03918# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03919# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03920# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04747# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_DRAW_INDIRECT_BIT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03922# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03923# If @dstAccessMask@
+--     includes
+--     'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-04994# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03924# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03925# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03926# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT'
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_GRAPHICS_BIT',
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03927# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT',
+--     or one of the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-03928# If @dstAccessMask@
+--     includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
+--     @dstStageMask@ /must/ include
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ALL_COMMANDS_BIT'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-06256# If
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     is not enabled and @dstAccessMask@ includes
+--     'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
+--     @dstStageMask@ /must/ not include any of the
+--     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages except
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-offset-01187# @offset@ /must/ be less
+--     than the size of @buffer@
+--
+-- -   #VUID-VkBufferMemoryBarrier2-size-01188# If @size@ is not equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater
+--     than @0@
+--
+-- -   #VUID-VkBufferMemoryBarrier2-size-01189# If @size@ is not equal to
+--     'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less than
+--     or equal to than the size of @buffer@ minus @offset@
+--
+-- -   #VUID-VkBufferMemoryBarrier2-buffer-01931# If @buffer@ is non-sparse
+--     then it /must/ be bound completely and contiguously to a single
+--     'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-04087# If
+--     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
+--     least one /must/ not be a special queue family reserved for external
+--     memory ownership transfers, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-buffer-04088# If @buffer@ was created
+--     with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
+--     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
+--     special queue family values reserved for external memory transfers,
+--     the other /must/ be
+--     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-buffer-04089# If @buffer@ was created
+--     with a sharing mode of
+--     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ both be valid
+--     queue families, or one of the special queue family values reserved
+--     for external memory transfers, as described in
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-03851# If either
+--     @srcStageMask@ or @dstStageMask@ includes
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_HOST_BIT',
+--     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ be equal
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkBufferMemoryBarrier2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2'
+--
+-- -   #VUID-VkBufferMemoryBarrier2-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcStageMask-parameter# @srcStageMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkBufferMemoryBarrier2-srcAccessMask-parameter#
+--     @srcAccessMask@ /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstStageMask-parameter# @dstStageMask@
+--     /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-VkBufferMemoryBarrier2-dstAccessMask-parameter#
+--     @dstAccessMask@ /must/ be a valid combination of
+--     'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2' values
+--
+-- -   #VUID-VkBufferMemoryBarrier2-buffer-parameter# @buffer@ /must/ be a
+--     valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2',
+-- 'Vulkan.Core10.Handles.Buffer', 'DependencyInfo',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data BufferMemoryBarrier2 = BufferMemoryBarrier2
+  { -- | @srcStageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
+    srcStageMask :: PipelineStageFlags2
+  , -- | @srcAccessMask@ is a 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'
+    -- mask of access flags to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
+    srcAccessMask :: AccessFlags2
+  , -- | @dstStageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
+    dstStageMask :: PipelineStageFlags2
+  , -- | @dstAccessMask@ is a 'Vulkan.Core13.Enums.AccessFlags2.AccessFlags2'
+    -- mask of access flags to be included in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
+    dstAccessMask :: AccessFlags2
+  , -- | @srcQueueFamilyIndex@ is the source queue family for a
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    srcQueueFamilyIndex :: Word32
+  , -- | @dstQueueFamilyIndex@ is the destination queue family for a
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
+    dstQueueFamilyIndex :: Word32
+  , -- | @buffer@ is a handle to the buffer whose backing memory is affected by
+    -- the barrier.
+    buffer :: Buffer
+  , -- | @offset@ is an offset in bytes into the backing memory for @buffer@;
+    -- this is relative to the base offset as bound to the buffer (see
+    -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory').
+    offset :: DeviceSize
+  , -- | @size@ is a size in bytes of the affected area of backing memory for
+    -- @buffer@, or 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to use the range
+    -- from @offset@ to the end of the buffer.
+    size :: DeviceSize
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (BufferMemoryBarrier2)
+#endif
+deriving instance Show BufferMemoryBarrier2
+
+instance ToCStruct BufferMemoryBarrier2 where
+  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p BufferMemoryBarrier2{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2)) (srcStageMask)
+    poke ((p `plusPtr` 24 :: Ptr AccessFlags2)) (srcAccessMask)
+    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2)) (dstStageMask)
+    poke ((p `plusPtr` 40 :: Ptr AccessFlags2)) (dstAccessMask)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (srcQueueFamilyIndex)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (dstQueueFamilyIndex)
+    poke ((p `plusPtr` 56 :: Ptr Buffer)) (buffer)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (offset)
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (size)
+    f
+  cStructSize = 80
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
+    poke ((p `plusPtr` 56 :: Ptr Buffer)) (zero)
+    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
+    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
+    f
+
+instance FromCStruct BufferMemoryBarrier2 where
+  peekCStruct p = do
+    srcStageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 16 :: Ptr PipelineStageFlags2))
+    srcAccessMask <- peek @AccessFlags2 ((p `plusPtr` 24 :: Ptr AccessFlags2))
+    dstStageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 32 :: Ptr PipelineStageFlags2))
+    dstAccessMask <- peek @AccessFlags2 ((p `plusPtr` 40 :: Ptr AccessFlags2))
+    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
+    buffer <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))
+    offset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
+    size <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))
+    pure $ BufferMemoryBarrier2
+             srcStageMask srcAccessMask dstStageMask dstAccessMask srcQueueFamilyIndex dstQueueFamilyIndex buffer offset size
+
+instance Storable BufferMemoryBarrier2 where
+  sizeOf ~_ = 80
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero BufferMemoryBarrier2 where
+  zero = BufferMemoryBarrier2
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkDependencyInfo - Structure specifying dependency information for a
+-- synchronization command
+--
+-- = Description
+--
+-- This structure defines a set of
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependencies>,
+-- as well as
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operations>
+-- and
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
+--
+-- Each member of @pMemoryBarriers@, @pBufferMemoryBarriers@, and
+-- @pImageMemoryBarriers@ defines a separate
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkDependencyInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEPENDENCY_INFO'
+--
+-- -   #VUID-VkDependencyInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkDependencyInfo-dependencyFlags-parameter# @dependencyFlags@
+--     /must/ be a valid combination of
+--     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' values
+--
+-- -   #VUID-VkDependencyInfo-pMemoryBarriers-parameter# If
+--     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid
+--     pointer to an array of @memoryBarrierCount@ valid 'MemoryBarrier2'
+--     structures
+--
+-- -   #VUID-VkDependencyInfo-pBufferMemoryBarriers-parameter# If
+--     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@
+--     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@
+--     valid 'BufferMemoryBarrier2' structures
+--
+-- -   #VUID-VkDependencyInfo-pImageMemoryBarriers-parameter# If
+--     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/
+--     be a valid pointer to an array of @imageMemoryBarrierCount@ valid
+--     'ImageMemoryBarrier2' structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'BufferMemoryBarrier2',
+-- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',
+-- 'ImageMemoryBarrier2', 'MemoryBarrier2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'cmdPipelineBarrier2',
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdPipelineBarrier2KHR',
+-- 'cmdSetEvent2',
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdSetEvent2KHR',
+-- 'cmdWaitEvents2',
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWaitEvents2KHR'
+data DependencyInfo = DependencyInfo
+  { -- | @dependencyFlags@ is a bitmask of
+    -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' specifying
+    -- how execution and memory dependencies are formed.
+    dependencyFlags :: DependencyFlags
+  , -- | @pMemoryBarriers@ is a pointer to an array of 'MemoryBarrier2'
+    -- structures defining memory dependencies between any memory accesses.
+    memoryBarriers :: Vector MemoryBarrier2
+  , -- | @pBufferMemoryBarriers@ is a pointer to an array of
+    -- 'BufferMemoryBarrier2' structures defining memory dependencies between
+    -- buffer ranges.
+    bufferMemoryBarriers :: Vector BufferMemoryBarrier2
+  , -- | @pImageMemoryBarriers@ is a pointer to an array of 'ImageMemoryBarrier2'
+    -- structures defining memory dependencies between image subresources.
+    imageMemoryBarriers :: Vector (SomeStruct ImageMemoryBarrier2)
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DependencyInfo)
+#endif
+deriving instance Show DependencyInfo
+
+instance ToCStruct DependencyInfo where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DependencyInfo{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEPENDENCY_INFO)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr DependencyFlags)) (dependencyFlags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32))
+    pPMemoryBarriers' <- ContT $ allocaBytes @MemoryBarrier2 ((Data.Vector.length (memoryBarriers)) * 48)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers' `plusPtr` (48 * (i)) :: Ptr MemoryBarrier2) (e)) (memoryBarriers)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr MemoryBarrier2))) (pPMemoryBarriers')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32))
+    pPBufferMemoryBarriers' <- ContT $ allocaBytes @BufferMemoryBarrier2 ((Data.Vector.length (bufferMemoryBarriers)) * 80)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers' `plusPtr` (80 * (i)) :: Ptr BufferMemoryBarrier2) (e)) (bufferMemoryBarriers)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr BufferMemoryBarrier2))) (pPBufferMemoryBarriers')
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32))
+    pPImageMemoryBarriers' <- ContT $ allocaBytes @(ImageMemoryBarrier2 _) ((Data.Vector.length (imageMemoryBarriers)) * 96)
+    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers' `plusPtr` (96 * (i)) :: Ptr (ImageMemoryBarrier2 _))) (e) . ($ ())) (imageMemoryBarriers)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (ImageMemoryBarrier2 _)))) (pPImageMemoryBarriers')
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEPENDENCY_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct DependencyInfo where
+  peekCStruct p = do
+    dependencyFlags <- peek @DependencyFlags ((p `plusPtr` 16 :: Ptr DependencyFlags))
+    memoryBarrierCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pMemoryBarriers <- peek @(Ptr MemoryBarrier2) ((p `plusPtr` 24 :: Ptr (Ptr MemoryBarrier2)))
+    pMemoryBarriers' <- generateM (fromIntegral memoryBarrierCount) (\i -> peekCStruct @MemoryBarrier2 ((pMemoryBarriers `advancePtrBytes` (48 * (i)) :: Ptr MemoryBarrier2)))
+    bufferMemoryBarrierCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pBufferMemoryBarriers <- peek @(Ptr BufferMemoryBarrier2) ((p `plusPtr` 40 :: Ptr (Ptr BufferMemoryBarrier2)))
+    pBufferMemoryBarriers' <- generateM (fromIntegral bufferMemoryBarrierCount) (\i -> peekCStruct @BufferMemoryBarrier2 ((pBufferMemoryBarriers `advancePtrBytes` (80 * (i)) :: Ptr BufferMemoryBarrier2)))
+    imageMemoryBarrierCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    pImageMemoryBarriers <- peek @(Ptr (ImageMemoryBarrier2 _)) ((p `plusPtr` 56 :: Ptr (Ptr (ImageMemoryBarrier2 _))))
+    pImageMemoryBarriers' <- generateM (fromIntegral imageMemoryBarrierCount) (\i -> peekSomeCStruct (forgetExtensions ((pImageMemoryBarriers `advancePtrBytes` (96 * (i)) :: Ptr (ImageMemoryBarrier2 _)))))
+    pure $ DependencyInfo
+             dependencyFlags pMemoryBarriers' pBufferMemoryBarriers' pImageMemoryBarriers'
+
+instance Zero DependencyInfo where
+  zero = DependencyInfo
+           zero
+           mempty
+           mempty
+           mempty
+
+
+-- | VkSemaphoreSubmitInfo - Structure specifying a semaphore signal or wait
+-- operation
+--
+-- = Description
+--
+-- Whether this structure defines a semaphore wait or signal operation is
+-- defined by how it is used.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @stageMask@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-device-03888# If the @device@ that
+--     @semaphore@ was created on is not a device group, @deviceIndex@
+--     /must/ be @0@
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-device-03889# If the @device@ that
+--     @semaphore@ was created on is a device group, @deviceIndex@ /must/
+--     be a valid device index
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO'
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-pNext-pNext# @pNext@ /must/ be @NULL@
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-semaphore-parameter# @semaphore@ /must/
+--     be a valid 'Vulkan.Core10.Handles.Semaphore' handle
+--
+-- -   #VUID-VkSemaphoreSubmitInfo-stageMask-parameter# @stageMask@ /must/
+--     be a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Handles.Semaphore',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'SubmitInfo2'
+data SemaphoreSubmitInfo = SemaphoreSubmitInfo
+  { -- | @semaphore@ is a 'Vulkan.Core10.Handles.Semaphore' affected by this
+    -- operation.
+    semaphore :: Semaphore
+  , -- | @value@ is either the value used to signal @semaphore@ or the value
+    -- waited on by @semaphore@, if @semaphore@ is a timeline semaphore.
+    -- Otherwise it is ignored.
+    value :: Word64
+  , -- | @stageMask@ is a
+    -- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2' mask of
+    -- pipeline stages which limit the first synchronization scope of a
+    -- semaphore signal operation, or second synchronization scope of a
+    -- semaphore wait operation as described in the
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
+    -- and
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+    -- sections of
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization the synchronization chapter>.
+    stageMask :: PipelineStageFlags2
+  , -- | @deviceIndex@ is the index of the device within a device group that
+    -- executes the semaphore wait or signal operation.
+    deviceIndex :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SemaphoreSubmitInfo)
+#endif
+deriving instance Show SemaphoreSubmitInfo
+
+instance ToCStruct SemaphoreSubmitInfo where
+  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SemaphoreSubmitInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (value)
+    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2)) (stageMask)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (deviceIndex)
+    f
+  cStructSize = 48
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
+    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct SemaphoreSubmitInfo where
+  peekCStruct p = do
+    semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))
+    value <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
+    stageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 32 :: Ptr PipelineStageFlags2))
+    deviceIndex <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
+    pure $ SemaphoreSubmitInfo
+             semaphore value stageMask deviceIndex
+
+instance Storable SemaphoreSubmitInfo where
+  sizeOf ~_ = 48
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero SemaphoreSubmitInfo where
+  zero = SemaphoreSubmitInfo
+           zero
+           zero
+           zero
+           zero
+
+
+-- | VkCommandBufferSubmitInfo - Structure specifying a command buffer
+-- submission
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-commandBuffer-03890# @commandBuffer@
+--     /must/ not have been allocated with
+--     'Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-deviceMask-03891# If @deviceMask@ is
+--     not @0@, it /must/ be a valid device mask
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO'
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-pNext-pNext# @pNext@ /must/ be
+--     @NULL@
+--
+-- -   #VUID-VkCommandBufferSubmitInfo-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType', 'SubmitInfo2'
+data CommandBufferSubmitInfo = CommandBufferSubmitInfo
+  { -- | @commandBuffer@ is a 'Vulkan.Core10.Handles.CommandBuffer' to be
+    -- submitted for execution.
+    commandBuffer :: Ptr CommandBuffer_T
+  , -- | @deviceMask@ is a bitmask indicating which devices in a device group
+    -- execute the command buffer. A @deviceMask@ of @0@ is equivalent to
+    -- setting all bits corresponding to valid devices in the group to @1@.
+    deviceMask :: Word32
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CommandBufferSubmitInfo)
+#endif
+deriving instance Show CommandBufferSubmitInfo
+
+instance ToCStruct CommandBufferSubmitInfo where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CommandBufferSubmitInfo{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (commandBuffer)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (deviceMask)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (zero)
+    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct CommandBufferSubmitInfo where
+  peekCStruct p = do
+    commandBuffer <- peek @(Ptr CommandBuffer_T) ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T)))
+    deviceMask <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
+    pure $ CommandBufferSubmitInfo
+             commandBuffer deviceMask
+
+instance Storable CommandBufferSubmitInfo where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CommandBufferSubmitInfo where
+  zero = CommandBufferSubmitInfo
+           zero
+           zero
+
+
+-- | VkSubmitInfo2 - Structure specifying a queue submit operation
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkSubmitInfo2-semaphore-03881# If the same semaphore is used
+--     as the @semaphore@ member of both an element of
+--     @pSignalSemaphoreInfos@ and @pWaitSemaphoreInfos@, and that
+--     semaphore is a timeline semaphore, the @value@ member of the
+--     @pSignalSemaphoreInfos@ element /must/ be greater than the @value@
+--     member of the @pWaitSemaphoreInfos@ element
+--
+-- -   #VUID-VkSubmitInfo2-semaphore-03882# If the @semaphore@ member of
+--     any element of @pSignalSemaphoreInfos@ is a timeline semaphore, the
+--     @value@ member of that element /must/ have a value greater than the
+--     current value of the semaphore when the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     is executed
+--
+-- -   #VUID-VkSubmitInfo2-semaphore-03883# If the @semaphore@ member of
+--     any element of @pSignalSemaphoreInfos@ is a timeline semaphore, the
+--     @value@ member of that element /must/ have a value which does not
+--     differ from the current value of the semaphore or the value of any
+--     outstanding semaphore wait or signal operation on that semaphore by
+--     more than
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--
+-- -   #VUID-VkSubmitInfo2-semaphore-03884# If the @semaphore@ member of
+--     any element of @pWaitSemaphoreInfos@ is a timeline semaphore, the
+--     @value@ member of that element /must/ have a value which does not
+--     differ from the current value of the semaphore or the value of any
+--     outstanding semaphore wait or signal operation on that semaphore by
+--     more than
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
+--
+-- -   #VUID-VkSubmitInfo2-flags-03886# If @flags@ includes
+--     'Vulkan.Core13.Enums.SubmitFlagBits.SUBMIT_PROTECTED_BIT', all
+--     elements of @pCommandBuffers@ /must/ be protected command buffers
+--
+-- -   #VUID-VkSubmitInfo2-flags-03887# If @flags@ does not include
+--     'Vulkan.Core13.Enums.SubmitFlagBits.SUBMIT_PROTECTED_BIT', each
+--     element of @pCommandBuffers@ /must/ not be a protected command
+--     buffer
+--
+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06192# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension resumed render pass instances>,
+--     they /must/ be suspended by a render pass instance earlier in
+--     submission order within @pCommandBufferInfos@
+--
+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06010# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     they /must/ be resumed by a render pass instance later in submission
+--     order within @pCommandBufferInfos@
+--
+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06011# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     there /must/ be no action or synchronization commands between that
+--     render pass instance and the render pass instance that resumes it
+--
+-- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06012# If any @commandBuffer@
+--     member of an element of @pCommandBufferInfos@ contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     there /must/ be no render pass instances between that render pass
+--     instance and the render pass instance that resumes it
+--
+-- -   #VUID-VkSubmitInfo2KHR-variableSampleLocations-06013# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
+--     limit is not supported, and any @commandBuffer@ member of an element
+--     of @pCommandBufferInfos@ contains any
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
+--     where a graphics pipeline has been bound, any pipelines bound in the
+--     render pass instance that resumes it, or any subsequent render pass
+--     instances that resume from that one and so on, /must/ use the same
+--     sample locations
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkSubmitInfo2-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBMIT_INFO_2'
+--
+-- -   #VUID-VkSubmitInfo2-pNext-pNext# Each @pNext@ member of any
+--     structure (including this one) in the @pNext@ chain /must/ be either
+--     @NULL@ or a pointer to a valid instance of
+--     'Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',
+--     'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
+--     or
+--     'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV'
+--
+-- -   #VUID-VkSubmitInfo2-sType-unique# The @sType@ value of each struct
+--     in the @pNext@ chain /must/ be unique
+--
+-- -   #VUID-VkSubmitInfo2-flags-parameter# @flags@ /must/ be a valid
+--     combination of 'Vulkan.Core13.Enums.SubmitFlagBits.SubmitFlagBits'
+--     values
+--
+-- -   #VUID-VkSubmitInfo2-pWaitSemaphoreInfos-parameter# If
+--     @waitSemaphoreInfoCount@ is not @0@, @pWaitSemaphoreInfos@ /must/ be
+--     a valid pointer to an array of @waitSemaphoreInfoCount@ valid
+--     'SemaphoreSubmitInfo' structures
+--
+-- -   #VUID-VkSubmitInfo2-pCommandBufferInfos-parameter# If
+--     @commandBufferInfoCount@ is not @0@, @pCommandBufferInfos@ /must/ be
+--     a valid pointer to an array of @commandBufferInfoCount@ valid
+--     'CommandBufferSubmitInfo' structures
+--
+-- -   #VUID-VkSubmitInfo2-pSignalSemaphoreInfos-parameter# If
+--     @signalSemaphoreInfoCount@ is not @0@, @pSignalSemaphoreInfos@
+--     /must/ be a valid pointer to an array of @signalSemaphoreInfoCount@
+--     valid 'SemaphoreSubmitInfo' structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'CommandBufferSubmitInfo', 'SemaphoreSubmitInfo',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'Vulkan.Core13.Enums.SubmitFlagBits.SubmitFlags', 'queueSubmit2',
+-- 'Vulkan.Extensions.VK_KHR_synchronization2.queueSubmit2KHR'
+data SubmitInfo2 (es :: [Type]) = SubmitInfo2
+  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
+    next :: Chain es
+  , -- | @flags@ is a bitmask of
+    -- 'Vulkan.Core13.Enums.SubmitFlagBits.SubmitFlagBits'.
+    flags :: SubmitFlags
+  , -- | @pWaitSemaphoreInfos@ is a pointer to an array of 'SemaphoreSubmitInfo'
+    -- structures defining
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operations>.
+    waitSemaphoreInfos :: Vector SemaphoreSubmitInfo
+  , -- | @pCommandBufferInfos@ is a pointer to an array of
+    -- 'CommandBufferSubmitInfo' structures describing command buffers to
+    -- execute in the batch.
+    commandBufferInfos :: Vector CommandBufferSubmitInfo
+  , -- | @pSignalSemaphoreInfos@ is a pointer to an array of
+    -- 'SemaphoreSubmitInfo' describing
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>.
+    signalSemaphoreInfos :: Vector SemaphoreSubmitInfo
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (SubmitInfo2 (es :: [Type]))
+#endif
+deriving instance Show (Chain es) => Show (SubmitInfo2 es)
+
+instance Extensible SubmitInfo2 where
+  extensibleTypeName = "SubmitInfo2"
+  setNext SubmitInfo2{..} next' = SubmitInfo2{next = next', ..}
+  getNext SubmitInfo2{..} = next
+  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubmitInfo2 e => b) -> Maybe b
+  extends _ f
+    | Just Refl <- eqT @e @PerformanceQuerySubmitInfoKHR = Just f
+    | Just Refl <- eqT @e @Win32KeyedMutexAcquireReleaseInfoKHR = Just f
+    | Just Refl <- eqT @e @Win32KeyedMutexAcquireReleaseInfoNV = Just f
+    | otherwise = Nothing
+
+instance (Extendss SubmitInfo2 es, PokeChain es) => ToCStruct (SubmitInfo2 es) where
+  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p SubmitInfo2{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBMIT_INFO_2)
+    pNext'' <- fmap castPtr . ContT $ withChain (next)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
+    lift $ poke ((p `plusPtr` 16 :: Ptr SubmitFlags)) (flags)
+    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphoreInfos)) :: Word32))
+    pPWaitSemaphoreInfos' <- ContT $ allocaBytes @SemaphoreSubmitInfo ((Data.Vector.length (waitSemaphoreInfos)) * 48)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreInfos' `plusPtr` (48 * (i)) :: Ptr SemaphoreSubmitInfo) (e)) (waitSemaphoreInfos)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr SemaphoreSubmitInfo))) (pPWaitSemaphoreInfos')
+    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (commandBufferInfos)) :: Word32))
+    pPCommandBufferInfos' <- ContT $ allocaBytes @CommandBufferSubmitInfo ((Data.Vector.length (commandBufferInfos)) * 32)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBufferInfos' `plusPtr` (32 * (i)) :: Ptr CommandBufferSubmitInfo) (e)) (commandBufferInfos)
+    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr CommandBufferSubmitInfo))) (pPCommandBufferInfos')
+    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (signalSemaphoreInfos)) :: Word32))
+    pPSignalSemaphoreInfos' <- ContT $ allocaBytes @SemaphoreSubmitInfo ((Data.Vector.length (signalSemaphoreInfos)) * 48)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreInfos' `plusPtr` (48 * (i)) :: Ptr SemaphoreSubmitInfo) (e)) (signalSemaphoreInfos)
+    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SemaphoreSubmitInfo))) (pPSignalSemaphoreInfos')
+    lift $ f
+  cStructSize = 64
+  cStructAlignment = 8
+  pokeZeroCStruct p f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBMIT_INFO_2)
+    pNext' <- fmap castPtr . ContT $ withZeroChain @es
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
+    lift $ f
+
+instance (Extendss SubmitInfo2 es, PeekChain es) => FromCStruct (SubmitInfo2 es) where
+  peekCStruct p = do
+    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
+    next <- peekChain (castPtr pNext)
+    flags <- peek @SubmitFlags ((p `plusPtr` 16 :: Ptr SubmitFlags))
+    waitSemaphoreInfoCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
+    pWaitSemaphoreInfos <- peek @(Ptr SemaphoreSubmitInfo) ((p `plusPtr` 24 :: Ptr (Ptr SemaphoreSubmitInfo)))
+    pWaitSemaphoreInfos' <- generateM (fromIntegral waitSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfo ((pWaitSemaphoreInfos `advancePtrBytes` (48 * (i)) :: Ptr SemaphoreSubmitInfo)))
+    commandBufferInfoCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
+    pCommandBufferInfos <- peek @(Ptr CommandBufferSubmitInfo) ((p `plusPtr` 40 :: Ptr (Ptr CommandBufferSubmitInfo)))
+    pCommandBufferInfos' <- generateM (fromIntegral commandBufferInfoCount) (\i -> peekCStruct @CommandBufferSubmitInfo ((pCommandBufferInfos `advancePtrBytes` (32 * (i)) :: Ptr CommandBufferSubmitInfo)))
+    signalSemaphoreInfoCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
+    pSignalSemaphoreInfos <- peek @(Ptr SemaphoreSubmitInfo) ((p `plusPtr` 56 :: Ptr (Ptr SemaphoreSubmitInfo)))
+    pSignalSemaphoreInfos' <- generateM (fromIntegral signalSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfo ((pSignalSemaphoreInfos `advancePtrBytes` (48 * (i)) :: Ptr SemaphoreSubmitInfo)))
+    pure $ SubmitInfo2
+             next flags pWaitSemaphoreInfos' pCommandBufferInfos' pSignalSemaphoreInfos'
+
+instance es ~ '[] => Zero (SubmitInfo2 es) where
+  zero = SubmitInfo2
+           ()
+           zero
+           mempty
+           mempty
+           mempty
+
+
+-- | VkPhysicalDeviceSynchronization2Features - Structure describing whether
+-- the implementation supports v2 synchronization commands
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceSynchronization2Features' 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. 'PhysicalDeviceSynchronization2Features' /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_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceSynchronization2Features = PhysicalDeviceSynchronization2Features
+  { -- | #extension-features-synchronization2# @synchronization2@ indicates
+    -- whether the implementation supports the new set of synchronization
+    -- commands introduced in @VK_KHR_synchronization2@.
+    synchronization2 :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceSynchronization2Features)
+#endif
+deriving instance Show PhysicalDeviceSynchronization2Features
+
+instance ToCStruct PhysicalDeviceSynchronization2Features where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceSynchronization2Features{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (synchronization2))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceSynchronization2Features where
+  peekCStruct p = do
+    synchronization2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceSynchronization2Features
+             (bool32ToBool synchronization2)
+
+instance Storable PhysicalDeviceSynchronization2Features where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceSynchronization2Features where
+  zero = PhysicalDeviceSynchronization2Features
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_synchronization2.hs-boot
@@ -0,0 +1,84 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_synchronization2"
+module Vulkan.Core13.Promoted_From_VK_KHR_synchronization2  ( BufferMemoryBarrier2
+                                                            , CommandBufferSubmitInfo
+                                                            , DependencyInfo
+                                                            , ImageMemoryBarrier2
+                                                            , MemoryBarrier2
+                                                            , PhysicalDeviceSynchronization2Features
+                                                            , SemaphoreSubmitInfo
+                                                            , SubmitInfo2
+                                                            ) 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 BufferMemoryBarrier2
+
+instance ToCStruct BufferMemoryBarrier2
+instance Show BufferMemoryBarrier2
+
+instance FromCStruct BufferMemoryBarrier2
+
+
+data CommandBufferSubmitInfo
+
+instance ToCStruct CommandBufferSubmitInfo
+instance Show CommandBufferSubmitInfo
+
+instance FromCStruct CommandBufferSubmitInfo
+
+
+data DependencyInfo
+
+instance ToCStruct DependencyInfo
+instance Show DependencyInfo
+
+instance FromCStruct DependencyInfo
+
+
+type role ImageMemoryBarrier2 nominal
+data ImageMemoryBarrier2 (es :: [Type])
+
+instance (Extendss ImageMemoryBarrier2 es, PokeChain es) => ToCStruct (ImageMemoryBarrier2 es)
+instance Show (Chain es) => Show (ImageMemoryBarrier2 es)
+
+instance (Extendss ImageMemoryBarrier2 es, PeekChain es) => FromCStruct (ImageMemoryBarrier2 es)
+
+
+data MemoryBarrier2
+
+instance ToCStruct MemoryBarrier2
+instance Show MemoryBarrier2
+
+instance FromCStruct MemoryBarrier2
+
+
+data PhysicalDeviceSynchronization2Features
+
+instance ToCStruct PhysicalDeviceSynchronization2Features
+instance Show PhysicalDeviceSynchronization2Features
+
+instance FromCStruct PhysicalDeviceSynchronization2Features
+
+
+data SemaphoreSubmitInfo
+
+instance ToCStruct SemaphoreSubmitInfo
+instance Show SemaphoreSubmitInfo
+
+instance FromCStruct SemaphoreSubmitInfo
+
+
+type role SubmitInfo2 nominal
+data SubmitInfo2 (es :: [Type])
+
+instance (Extendss SubmitInfo2 es, PokeChain es) => ToCStruct (SubmitInfo2 es)
+instance Show (Chain es) => Show (SubmitInfo2 es)
+
+instance (Extendss SubmitInfo2 es, PeekChain es) => FromCStruct (SubmitInfo2 es)
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_zero_initialize_workgroup_memory.hs b/src/Vulkan/Core13/Promoted_From_VK_KHR_zero_initialize_workgroup_memory.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_zero_initialize_workgroup_memory.hs
@@ -0,0 +1,100 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_zero_initialize_workgroup_memory"
+module Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory  ( PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(..)
+                                                                            , StructureType(..)
+                                                                            ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(..))
+-- | VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures - Structure
+-- describing support for zero initialization of workgroup memory by an
+-- implementation
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures' 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. 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures' /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_KHR_zero_initialize_workgroup_memory VK_KHR_zero_initialize_workgroup_memory>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VERSION_1_3 VK_VERSION_1_3>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+  { -- | #extension-features-shaderZeroInitializeWorkgroupMemory#
+    -- @shaderZeroInitializeWorkgroupMemory@ specifies whether the
+    -- implementation supports initializing a variable in Workgroup storage
+    -- class.
+    shaderZeroInitializeWorkgroupMemory :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
+#endif
+deriving instance Show PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+
+instance ToCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderZeroInitializeWorkgroupMemory))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
+  peekCStruct p = do
+    shaderZeroInitializeWorkgroupMemory <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+             (bool32ToBool shaderZeroInitializeWorkgroupMemory)
+
+instance Storable PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures where
+  zero = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+           zero
+
diff --git a/src/Vulkan/Core13/Promoted_From_VK_KHR_zero_initialize_workgroup_memory.hs-boot b/src/Vulkan/Core13/Promoted_From_VK_KHR_zero_initialize_workgroup_memory.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Core13/Promoted_From_VK_KHR_zero_initialize_workgroup_memory.hs-boot
@@ -0,0 +1,15 @@
+{-# language CPP #-}
+-- No documentation found for Chapter "Promoted_From_VK_KHR_zero_initialize_workgroup_memory"
+module Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory  (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+
+instance ToCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+instance Show PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+
+instance FromCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
+
diff --git a/src/Vulkan/Dynamic.hs b/src/Vulkan/Dynamic.hs
--- a/src/Vulkan/Dynamic.hs
+++ b/src/Vulkan/Dynamic.hs
@@ -48,7 +48,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindBufferMemoryInfo)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_bind_memory2 (BindImageMemoryInfo)
 import {-# SOURCE #-} Vulkan.Core10.SparseResourceMemoryManagement (BindSparseInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (BlitImageInfo2KHR)
+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_FUCHSIA_buffer_collection (BufferCollectionCreateInfoFUCHSIA)
@@ -87,11 +87,11 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureModeKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyAccelerationStructureToMemoryInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferInfo2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyBufferToImageInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyBufferInfo2)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyBufferToImageInfo2)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (CopyDescriptorSet)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageInfo2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (CopyImageToBufferInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageInfo2)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageToBufferInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_acceleration_structure (CopyMemoryToAccelerationStructureInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_NVX_binary_import (CuFunctionCreateInfoNVX)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (CuFunctionNVX)
@@ -116,7 +116,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_debug_utils (DebugUtilsObjectTagInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.Handles (DeferredOperationKHR)
 import {-# SOURCE #-} Vulkan.Core10.Enums.DependencyFlagBits (DependencyFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (DependencyInfoKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
 import {-# SOURCE #-} Vulkan.Core10.Handles (DescriptorPool)
 import {-# SOURCE #-} Vulkan.Core10.DescriptorSet (DescriptorPoolCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Enums.DescriptorPoolResetFlags (DescriptorPoolResetFlags)
@@ -128,12 +128,12 @@
 import {-# SOURCE #-} Vulkan.Core11.Handles (DescriptorUpdateTemplate)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template (DescriptorUpdateTemplateCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.FundamentalTypes (DeviceAddress)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (DeviceBufferMemoryRequirementsKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceBufferMemoryRequirements)
 import {-# SOURCE #-} Vulkan.Core10.Device (DeviceCreateInfo)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_display_control (DeviceEventInfoEXT)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentCapabilitiesKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (DeviceGroupPresentModeFlagsKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_maintenance4 (DeviceImageMemoryRequirementsKHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceImageMemoryRequirements)
 import {-# SOURCE #-} Vulkan.Core10.Handles (DeviceMemory)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_buffer_device_address (DeviceMemoryOpaqueCaptureAddressInfo)
 import {-# SOURCE #-} Vulkan.Core11.Originally_Based_On_VK_KHR_protected_memory (DeviceQueueInfo2)
@@ -272,7 +272,7 @@
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceProperties2)
 import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2 (PhysicalDeviceSparseImageFormatInfo2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_get_surface_capabilities2 (PhysicalDeviceSurfaceInfo2KHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_tooling_info (PhysicalDeviceToolPropertiesEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_tooling_info (PhysicalDeviceToolProperties)
 import {-# SOURCE #-} Vulkan.Core10.Handles (PhysicalDevice_T)
 import {-# SOURCE #-} Vulkan.Core10.Handles (Pipeline)
 import {-# SOURCE #-} Vulkan.Core10.Enums.PipelineBindPoint (PipelineBindPoint)
@@ -287,12 +287,12 @@
 import {-# SOURCE #-} Vulkan.Core10.PipelineLayout (PipelineLayoutCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits)
 import {-# SOURCE #-} Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (PipelineStageFlags2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_swapchain (PresentInfoKHR)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_surface (PresentModeKHR)
 import {-# SOURCE #-} Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_private_data (PrivateDataSlotCreateInfoEXT)
-import {-# SOURCE #-} Vulkan.Extensions.Handles (PrivateDataSlotEXT)
+import {-# SOURCE #-} Vulkan.Core13.Handles (PrivateDataSlot)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_private_data (PrivateDataSlotCreateInfo)
 import {-# SOURCE #-} Vulkan.Core10.Enums.QueryControlFlagBits (QueryControlFlags)
 import {-# SOURCE #-} Vulkan.Core10.Handles (QueryPool)
 import {-# SOURCE #-} Vulkan.Core10.Query (QueryPoolCreateInfo)
@@ -312,8 +312,8 @@
 import {-# SOURCE #-} Vulkan.Core10.CommandBufferBuilding (RenderPassBeginInfo)
 import {-# SOURCE #-} Vulkan.Core10.Pass (RenderPassCreateInfo)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (RenderPassCreateInfo2)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_dynamic_rendering (RenderingInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_copy_commands2 (ResolveImageInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ResolveImageInfo2)
 import {-# SOURCE #-} Vulkan.Core10.Enums.Result (Result)
 import {-# SOURCE #-} Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
 import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
@@ -347,7 +347,7 @@
 import {-# SOURCE #-} Vulkan.Extensions.VK_GGP_stream_descriptor_surface (StreamDescriptorSurfaceCreateInfoGGP)
 import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (StridedDeviceAddressRegionKHR)
 import {-# SOURCE #-} Vulkan.Core10.Queue (SubmitInfo)
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_synchronization2 (SubmitInfo2KHR)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (SubmitInfo2)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassBeginInfo)
 import {-# SOURCE #-} Vulkan.Core10.Enums.SubpassContents (SubpassContents)
 import {-# SOURCE #-} Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2 (SubpassEndInfo)
@@ -464,7 +464,7 @@
   , pVkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pPerformanceQueryCreateInfo" ::: Ptr QueryPoolPerformanceCreateInfoKHR) -> ("pNumPasses" ::: Ptr Word32) -> IO ())
   , pVkCreateHeadlessSurfaceEXT :: FunPtr (Ptr Instance_T -> ("pCreateInfo" ::: Ptr HeadlessSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result)
   , pVkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV :: FunPtr (Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result)
-  , pVkGetPhysicalDeviceToolPropertiesEXT :: FunPtr (Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result)
+  , pVkGetPhysicalDeviceToolProperties :: FunPtr (Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolProperties) -> IO Result)
   , pVkGetPhysicalDeviceFragmentShadingRatesKHR :: FunPtr (Ptr PhysicalDevice_T -> ("pFragmentShadingRateCount" ::: Ptr Word32) -> ("pFragmentShadingRates" ::: Ptr PhysicalDeviceFragmentShadingRateKHR) -> IO Result)
   , pVkAcquireDrmDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> DisplayKHR -> IO Result)
   , pVkGetDrmDisplayEXT :: FunPtr (Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> ("connectorId" ::: Word32) -> Ptr DisplayKHR -> IO Result)
@@ -586,7 +586,7 @@
   vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"#)
   vkCreateHeadlessSurfaceEXT <- getInstanceProcAddr' handle (Ptr "vkCreateHeadlessSurfaceEXT"#)
   vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"#)
-  vkGetPhysicalDeviceToolPropertiesEXT <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceToolPropertiesEXT"#)
+  vkGetPhysicalDeviceToolProperties <- getFirstInstanceProcAddr [(Ptr "vkGetPhysicalDeviceToolPropertiesEXT"#), (Ptr "vkGetPhysicalDeviceToolProperties"#)]
   vkGetPhysicalDeviceFragmentShadingRatesKHR <- getInstanceProcAddr' handle (Ptr "vkGetPhysicalDeviceFragmentShadingRatesKHR"#)
   vkAcquireDrmDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkAcquireDrmDisplayEXT"#)
   vkGetDrmDisplayEXT <- getInstanceProcAddr' handle (Ptr "vkGetDrmDisplayEXT"#)
@@ -674,7 +674,7 @@
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pPerformanceQueryCreateInfo" ::: Ptr QueryPoolPerformanceCreateInfoKHR) -> ("pNumPasses" ::: Ptr Word32) -> IO ()) vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)
     (castFunPtr @_ @(Ptr Instance_T -> ("pCreateInfo" ::: Ptr HeadlessSurfaceCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pSurface" ::: Ptr SurfaceKHR) -> IO Result) vkCreateHeadlessSurfaceEXT)
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pCombinationCount" ::: Ptr Word32) -> ("pCombinations" ::: Ptr FramebufferMixedSamplesCombinationNV) -> IO Result) vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)
-    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolPropertiesEXT) -> IO Result) vkGetPhysicalDeviceToolPropertiesEXT)
+    (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pToolCount" ::: Ptr Word32) -> ("pToolProperties" ::: Ptr PhysicalDeviceToolProperties) -> IO Result) vkGetPhysicalDeviceToolProperties)
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("pFragmentShadingRateCount" ::: Ptr Word32) -> ("pFragmentShadingRates" ::: Ptr PhysicalDeviceFragmentShadingRateKHR) -> IO Result) vkGetPhysicalDeviceFragmentShadingRatesKHR)
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> DisplayKHR -> IO Result) vkAcquireDrmDisplayEXT)
     (castFunPtr @_ @(Ptr PhysicalDevice_T -> ("drmFd" ::: Int32) -> ("connectorId" ::: Word32) -> Ptr DisplayKHR -> IO Result) vkGetDrmDisplayEXT)
@@ -872,9 +872,9 @@
   , pVkGetBufferMemoryRequirements2 :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
   , pVkGetImageMemoryRequirements2 :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2)) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
   , pVkGetImageSparseMemoryRequirements2 :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ())
-  , pVkGetDeviceBufferMemoryRequirementsKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceBufferMemoryRequirementsKHR) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
-  , pVkGetDeviceImageMemoryRequirementsKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirementsKHR) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
-  , pVkGetDeviceImageSparseMemoryRequirementsKHR :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirementsKHR) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ())
+  , pVkGetDeviceBufferMemoryRequirements :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceBufferMemoryRequirements) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
+  , pVkGetDeviceImageMemoryRequirements :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirements) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ())
+  , pVkGetDeviceImageSparseMemoryRequirements :: FunPtr (Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirements) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ())
   , pVkCreateSamplerYcbcrConversion :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct SamplerYcbcrConversionCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr SamplerYcbcrConversion) -> IO Result)
   , pVkDestroySamplerYcbcrConversion :: FunPtr (Ptr Device_T -> SamplerYcbcrConversion -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkGetDeviceQueue2 :: FunPtr (Ptr Device_T -> ("pQueueInfo" ::: Ptr DeviceQueueInfo2) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ())
@@ -985,45 +985,45 @@
   , pVkGetDeferredOperationMaxConcurrencyKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Word32)
   , pVkGetDeferredOperationResultKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result)
   , pVkDeferredOperationJoinKHR :: FunPtr (Ptr Device_T -> DeferredOperationKHR -> IO Result)
-  , pVkCmdSetCullModeEXT :: FunPtr (Ptr CommandBuffer_T -> CullModeFlags -> IO ())
-  , pVkCmdSetFrontFaceEXT :: FunPtr (Ptr CommandBuffer_T -> FrontFace -> IO ())
-  , pVkCmdSetPrimitiveTopologyEXT :: FunPtr (Ptr CommandBuffer_T -> PrimitiveTopology -> IO ())
-  , pVkCmdSetViewportWithCountEXT :: FunPtr (Ptr CommandBuffer_T -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ())
-  , pVkCmdSetScissorWithCountEXT :: FunPtr (Ptr CommandBuffer_T -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ())
-  , pVkCmdBindVertexBuffers2EXT :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> ("pStrides" ::: Ptr DeviceSize) -> IO ())
-  , pVkCmdSetDepthTestEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("depthTestEnable" ::: Bool32) -> IO ())
-  , pVkCmdSetDepthWriteEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("depthWriteEnable" ::: Bool32) -> IO ())
-  , pVkCmdSetDepthCompareOpEXT :: FunPtr (Ptr CommandBuffer_T -> ("depthCompareOp" ::: CompareOp) -> IO ())
-  , pVkCmdSetDepthBoundsTestEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("depthBoundsTestEnable" ::: Bool32) -> IO ())
-  , pVkCmdSetStencilTestEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("stencilTestEnable" ::: Bool32) -> IO ())
-  , pVkCmdSetStencilOpEXT :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> IO ())
+  , pVkCmdSetCullMode :: FunPtr (Ptr CommandBuffer_T -> CullModeFlags -> IO ())
+  , pVkCmdSetFrontFace :: FunPtr (Ptr CommandBuffer_T -> FrontFace -> IO ())
+  , pVkCmdSetPrimitiveTopology :: FunPtr (Ptr CommandBuffer_T -> PrimitiveTopology -> IO ())
+  , pVkCmdSetViewportWithCount :: FunPtr (Ptr CommandBuffer_T -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ())
+  , pVkCmdSetScissorWithCount :: FunPtr (Ptr CommandBuffer_T -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ())
+  , pVkCmdBindVertexBuffers2 :: FunPtr (Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> ("pStrides" ::: Ptr DeviceSize) -> IO ())
+  , pVkCmdSetDepthTestEnable :: FunPtr (Ptr CommandBuffer_T -> ("depthTestEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetDepthWriteEnable :: FunPtr (Ptr CommandBuffer_T -> ("depthWriteEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetDepthCompareOp :: FunPtr (Ptr CommandBuffer_T -> ("depthCompareOp" ::: CompareOp) -> IO ())
+  , pVkCmdSetDepthBoundsTestEnable :: FunPtr (Ptr CommandBuffer_T -> ("depthBoundsTestEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetStencilTestEnable :: FunPtr (Ptr CommandBuffer_T -> ("stencilTestEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetStencilOp :: FunPtr (Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> IO ())
   , pVkCmdSetPatchControlPointsEXT :: FunPtr (Ptr CommandBuffer_T -> ("patchControlPoints" ::: Word32) -> IO ())
-  , pVkCmdSetRasterizerDiscardEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("rasterizerDiscardEnable" ::: Bool32) -> IO ())
-  , pVkCmdSetDepthBiasEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("depthBiasEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetRasterizerDiscardEnable :: FunPtr (Ptr CommandBuffer_T -> ("rasterizerDiscardEnable" ::: Bool32) -> IO ())
+  , pVkCmdSetDepthBiasEnable :: FunPtr (Ptr CommandBuffer_T -> ("depthBiasEnable" ::: Bool32) -> IO ())
   , pVkCmdSetLogicOpEXT :: FunPtr (Ptr CommandBuffer_T -> LogicOp -> IO ())
-  , pVkCmdSetPrimitiveRestartEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("primitiveRestartEnable" ::: Bool32) -> IO ())
-  , pVkCreatePrivateDataSlotEXT :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr PrivateDataSlotCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPrivateDataSlot" ::: Ptr PrivateDataSlotEXT) -> IO Result)
-  , pVkDestroyPrivateDataSlotEXT :: FunPtr (Ptr Device_T -> PrivateDataSlotEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
-  , pVkSetPrivateDataEXT :: FunPtr (Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlotEXT -> ("data" ::: Word64) -> IO Result)
-  , pVkGetPrivateDataEXT :: FunPtr (Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlotEXT -> ("pData" ::: Ptr Word64) -> IO ())
-  , pVkCmdCopyBuffer2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyBufferInfo" ::: Ptr CopyBufferInfo2KHR) -> IO ())
-  , pVkCmdCopyImage2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyImageInfo" ::: Ptr CopyImageInfo2KHR) -> IO ())
-  , pVkCmdBlitImage2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pBlitImageInfo" ::: Ptr BlitImageInfo2KHR) -> IO ())
-  , pVkCmdCopyBufferToImage2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyBufferToImageInfo" ::: Ptr CopyBufferToImageInfo2KHR) -> IO ())
-  , pVkCmdCopyImageToBuffer2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pCopyImageToBufferInfo" ::: Ptr CopyImageToBufferInfo2KHR) -> IO ())
-  , pVkCmdResolveImage2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pResolveImageInfo" ::: Ptr ResolveImageInfo2KHR) -> IO ())
+  , pVkCmdSetPrimitiveRestartEnable :: FunPtr (Ptr CommandBuffer_T -> ("primitiveRestartEnable" ::: Bool32) -> IO ())
+  , pVkCreatePrivateDataSlot :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr PrivateDataSlotCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPrivateDataSlot" ::: Ptr PrivateDataSlot) -> IO Result)
+  , pVkDestroyPrivateDataSlot :: FunPtr (Ptr Device_T -> PrivateDataSlot -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
+  , pVkSetPrivateData :: FunPtr (Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlot -> ("data" ::: Word64) -> IO Result)
+  , pVkGetPrivateData :: FunPtr (Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlot -> ("pData" ::: Ptr Word64) -> IO ())
+  , pVkCmdCopyBuffer2 :: FunPtr (Ptr CommandBuffer_T -> ("pCopyBufferInfo" ::: Ptr CopyBufferInfo2) -> IO ())
+  , pVkCmdCopyImage2 :: FunPtr (Ptr CommandBuffer_T -> ("pCopyImageInfo" ::: Ptr CopyImageInfo2) -> IO ())
+  , pVkCmdBlitImage2 :: FunPtr (Ptr CommandBuffer_T -> ("pBlitImageInfo" ::: Ptr BlitImageInfo2) -> IO ())
+  , pVkCmdCopyBufferToImage2 :: FunPtr (Ptr CommandBuffer_T -> ("pCopyBufferToImageInfo" ::: Ptr CopyBufferToImageInfo2) -> IO ())
+  , pVkCmdCopyImageToBuffer2 :: FunPtr (Ptr CommandBuffer_T -> ("pCopyImageToBufferInfo" ::: Ptr CopyImageToBufferInfo2) -> IO ())
+  , pVkCmdResolveImage2 :: FunPtr (Ptr CommandBuffer_T -> ("pResolveImageInfo" ::: Ptr ResolveImageInfo2) -> IO ())
   , pVkCmdSetFragmentShadingRateKHR :: FunPtr (Ptr CommandBuffer_T -> ("pFragmentSize" ::: Ptr Extent2D) -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ())
   , pVkCmdSetFragmentShadingRateEnumNV :: FunPtr (Ptr CommandBuffer_T -> FragmentShadingRateNV -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ())
   , pVkGetAccelerationStructureBuildSizesKHR :: FunPtr (Ptr Device_T -> AccelerationStructureBuildTypeKHR -> ("pBuildInfo" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pMaxPrimitiveCounts" ::: Ptr Word32) -> ("pSizeInfo" ::: Ptr AccelerationStructureBuildSizesInfoKHR) -> IO ())
   , pVkCmdSetVertexInputEXT :: FunPtr (Ptr CommandBuffer_T -> ("vertexBindingDescriptionCount" ::: Word32) -> ("pVertexBindingDescriptions" ::: Ptr VertexInputBindingDescription2EXT) -> ("vertexAttributeDescriptionCount" ::: Word32) -> ("pVertexAttributeDescriptions" ::: Ptr VertexInputAttributeDescription2EXT) -> IO ())
   , pVkCmdSetColorWriteEnableEXT :: FunPtr (Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pColorWriteEnables" ::: Ptr Bool32) -> IO ())
-  , pVkCmdSetEvent2KHR :: FunPtr (Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr DependencyInfoKHR) -> IO ())
-  , pVkCmdResetEvent2KHR :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags2KHR) -> IO ())
-  , pVkCmdWaitEvents2KHR :: FunPtr (Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr DependencyInfoKHR) -> IO ())
-  , pVkCmdPipelineBarrier2KHR :: FunPtr (Ptr CommandBuffer_T -> ("pDependencyInfo" ::: Ptr DependencyInfoKHR) -> IO ())
-  , pVkQueueSubmit2KHR :: FunPtr (Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SomeStruct SubmitInfo2KHR)) -> Fence -> IO Result)
-  , pVkCmdWriteTimestamp2KHR :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> QueryPool -> ("query" ::: Word32) -> IO ())
-  , pVkCmdWriteBufferMarker2AMD :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ())
+  , pVkCmdSetEvent2 :: FunPtr (Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr DependencyInfo) -> IO ())
+  , pVkCmdResetEvent2 :: FunPtr (Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags2) -> IO ())
+  , pVkCmdWaitEvents2 :: FunPtr (Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr DependencyInfo) -> IO ())
+  , pVkCmdPipelineBarrier2 :: FunPtr (Ptr CommandBuffer_T -> ("pDependencyInfo" ::: Ptr DependencyInfo) -> IO ())
+  , pVkQueueSubmit2 :: FunPtr (Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SomeStruct SubmitInfo2)) -> Fence -> IO Result)
+  , pVkCmdWriteTimestamp2 :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2 -> QueryPool -> ("query" ::: Word32) -> IO ())
+  , pVkCmdWriteBufferMarker2AMD :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2 -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ())
   , pVkGetQueueCheckpointData2NV :: FunPtr (Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointData2NV) -> IO ())
   , pVkCreateCuModuleNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CuModuleCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pModule" ::: Ptr CuModuleNVX) -> IO Result)
   , pVkCreateCuFunctionNVX :: FunPtr (Ptr Device_T -> ("pCreateInfo" ::: Ptr CuFunctionCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFunction" ::: Ptr CuFunctionNVX) -> IO Result)
@@ -1037,8 +1037,8 @@
   , pVkSetBufferCollectionImageConstraintsFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pImageConstraintsInfo" ::: Ptr ImageConstraintsInfoFUCHSIA) -> IO Result)
   , pVkDestroyBufferCollectionFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ())
   , pVkGetBufferCollectionPropertiesFUCHSIA :: FunPtr (Ptr Device_T -> BufferCollectionFUCHSIA -> ("pProperties" ::: Ptr BufferCollectionPropertiesFUCHSIA) -> IO Result)
-  , pVkCmdBeginRenderingKHR :: FunPtr (Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfoKHR)) -> IO ())
-  , pVkCmdEndRenderingKHR :: FunPtr (Ptr CommandBuffer_T -> IO ())
+  , pVkCmdBeginRendering :: FunPtr (Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> IO ())
+  , pVkCmdEndRendering :: FunPtr (Ptr CommandBuffer_T -> IO ())
   }
 
 deriving instance Eq DeviceCmds
@@ -1301,9 +1301,9 @@
   vkGetBufferMemoryRequirements2 <- getFirstDeviceProcAddr [(Ptr "vkGetBufferMemoryRequirements2KHR"#), (Ptr "vkGetBufferMemoryRequirements2"#)]
   vkGetImageMemoryRequirements2 <- getFirstDeviceProcAddr [(Ptr "vkGetImageMemoryRequirements2KHR"#), (Ptr "vkGetImageMemoryRequirements2"#)]
   vkGetImageSparseMemoryRequirements2 <- getFirstDeviceProcAddr [(Ptr "vkGetImageSparseMemoryRequirements2KHR"#), (Ptr "vkGetImageSparseMemoryRequirements2"#)]
-  vkGetDeviceBufferMemoryRequirementsKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceBufferMemoryRequirementsKHR"#)
-  vkGetDeviceImageMemoryRequirementsKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceImageMemoryRequirementsKHR"#)
-  vkGetDeviceImageSparseMemoryRequirementsKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeviceImageSparseMemoryRequirementsKHR"#)
+  vkGetDeviceBufferMemoryRequirements <- getFirstDeviceProcAddr [(Ptr "vkGetDeviceBufferMemoryRequirementsKHR"#), (Ptr "vkGetDeviceBufferMemoryRequirements"#)]
+  vkGetDeviceImageMemoryRequirements <- getFirstDeviceProcAddr [(Ptr "vkGetDeviceImageMemoryRequirementsKHR"#), (Ptr "vkGetDeviceImageMemoryRequirements"#)]
+  vkGetDeviceImageSparseMemoryRequirements <- getFirstDeviceProcAddr [(Ptr "vkGetDeviceImageSparseMemoryRequirementsKHR"#), (Ptr "vkGetDeviceImageSparseMemoryRequirements"#)]
   vkCreateSamplerYcbcrConversion <- getFirstDeviceProcAddr [(Ptr "vkCreateSamplerYcbcrConversionKHR"#), (Ptr "vkCreateSamplerYcbcrConversion"#)]
   vkDestroySamplerYcbcrConversion <- getFirstDeviceProcAddr [(Ptr "vkDestroySamplerYcbcrConversionKHR"#), (Ptr "vkDestroySamplerYcbcrConversion"#)]
   vkGetDeviceQueue2 <- getDeviceProcAddr' handle (Ptr "vkGetDeviceQueue2"#)
@@ -1414,44 +1414,44 @@
   vkGetDeferredOperationMaxConcurrencyKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeferredOperationMaxConcurrencyKHR"#)
   vkGetDeferredOperationResultKHR <- getDeviceProcAddr' handle (Ptr "vkGetDeferredOperationResultKHR"#)
   vkDeferredOperationJoinKHR <- getDeviceProcAddr' handle (Ptr "vkDeferredOperationJoinKHR"#)
-  vkCmdSetCullModeEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetCullModeEXT"#)
-  vkCmdSetFrontFaceEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetFrontFaceEXT"#)
-  vkCmdSetPrimitiveTopologyEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetPrimitiveTopologyEXT"#)
-  vkCmdSetViewportWithCountEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetViewportWithCountEXT"#)
-  vkCmdSetScissorWithCountEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetScissorWithCountEXT"#)
-  vkCmdBindVertexBuffers2EXT <- getDeviceProcAddr' handle (Ptr "vkCmdBindVertexBuffers2EXT"#)
-  vkCmdSetDepthTestEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthTestEnableEXT"#)
-  vkCmdSetDepthWriteEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthWriteEnableEXT"#)
-  vkCmdSetDepthCompareOpEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthCompareOpEXT"#)
-  vkCmdSetDepthBoundsTestEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBoundsTestEnableEXT"#)
-  vkCmdSetStencilTestEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilTestEnableEXT"#)
-  vkCmdSetStencilOpEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetStencilOpEXT"#)
+  vkCmdSetCullMode <- getFirstDeviceProcAddr [(Ptr "vkCmdSetCullModeEXT"#), (Ptr "vkCmdSetCullMode"#)]
+  vkCmdSetFrontFace <- getFirstDeviceProcAddr [(Ptr "vkCmdSetFrontFaceEXT"#), (Ptr "vkCmdSetFrontFace"#)]
+  vkCmdSetPrimitiveTopology <- getFirstDeviceProcAddr [(Ptr "vkCmdSetPrimitiveTopologyEXT"#), (Ptr "vkCmdSetPrimitiveTopology"#)]
+  vkCmdSetViewportWithCount <- getFirstDeviceProcAddr [(Ptr "vkCmdSetViewportWithCountEXT"#), (Ptr "vkCmdSetViewportWithCount"#)]
+  vkCmdSetScissorWithCount <- getFirstDeviceProcAddr [(Ptr "vkCmdSetScissorWithCountEXT"#), (Ptr "vkCmdSetScissorWithCount"#)]
+  vkCmdBindVertexBuffers2 <- getFirstDeviceProcAddr [(Ptr "vkCmdBindVertexBuffers2EXT"#), (Ptr "vkCmdBindVertexBuffers2"#)]
+  vkCmdSetDepthTestEnable <- getFirstDeviceProcAddr [(Ptr "vkCmdSetDepthTestEnableEXT"#), (Ptr "vkCmdSetDepthTestEnable"#)]
+  vkCmdSetDepthWriteEnable <- getFirstDeviceProcAddr [(Ptr "vkCmdSetDepthWriteEnableEXT"#), (Ptr "vkCmdSetDepthWriteEnable"#)]
+  vkCmdSetDepthCompareOp <- getFirstDeviceProcAddr [(Ptr "vkCmdSetDepthCompareOpEXT"#), (Ptr "vkCmdSetDepthCompareOp"#)]
+  vkCmdSetDepthBoundsTestEnable <- getFirstDeviceProcAddr [(Ptr "vkCmdSetDepthBoundsTestEnableEXT"#), (Ptr "vkCmdSetDepthBoundsTestEnable"#)]
+  vkCmdSetStencilTestEnable <- getFirstDeviceProcAddr [(Ptr "vkCmdSetStencilTestEnableEXT"#), (Ptr "vkCmdSetStencilTestEnable"#)]
+  vkCmdSetStencilOp <- getFirstDeviceProcAddr [(Ptr "vkCmdSetStencilOpEXT"#), (Ptr "vkCmdSetStencilOp"#)]
   vkCmdSetPatchControlPointsEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetPatchControlPointsEXT"#)
-  vkCmdSetRasterizerDiscardEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetRasterizerDiscardEnableEXT"#)
-  vkCmdSetDepthBiasEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetDepthBiasEnableEXT"#)
+  vkCmdSetRasterizerDiscardEnable <- getFirstDeviceProcAddr [(Ptr "vkCmdSetRasterizerDiscardEnableEXT"#), (Ptr "vkCmdSetRasterizerDiscardEnable"#)]
+  vkCmdSetDepthBiasEnable <- getFirstDeviceProcAddr [(Ptr "vkCmdSetDepthBiasEnableEXT"#), (Ptr "vkCmdSetDepthBiasEnable"#)]
   vkCmdSetLogicOpEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetLogicOpEXT"#)
-  vkCmdSetPrimitiveRestartEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetPrimitiveRestartEnableEXT"#)
-  vkCreatePrivateDataSlotEXT <- getDeviceProcAddr' handle (Ptr "vkCreatePrivateDataSlotEXT"#)
-  vkDestroyPrivateDataSlotEXT <- getDeviceProcAddr' handle (Ptr "vkDestroyPrivateDataSlotEXT"#)
-  vkSetPrivateDataEXT <- getDeviceProcAddr' handle (Ptr "vkSetPrivateDataEXT"#)
-  vkGetPrivateDataEXT <- getDeviceProcAddr' handle (Ptr "vkGetPrivateDataEXT"#)
-  vkCmdCopyBuffer2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBuffer2KHR"#)
-  vkCmdCopyImage2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImage2KHR"#)
-  vkCmdBlitImage2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdBlitImage2KHR"#)
-  vkCmdCopyBufferToImage2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyBufferToImage2KHR"#)
-  vkCmdCopyImageToBuffer2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdCopyImageToBuffer2KHR"#)
-  vkCmdResolveImage2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdResolveImage2KHR"#)
+  vkCmdSetPrimitiveRestartEnable <- getFirstDeviceProcAddr [(Ptr "vkCmdSetPrimitiveRestartEnableEXT"#), (Ptr "vkCmdSetPrimitiveRestartEnable"#)]
+  vkCreatePrivateDataSlot <- getFirstDeviceProcAddr [(Ptr "vkCreatePrivateDataSlotEXT"#), (Ptr "vkCreatePrivateDataSlot"#)]
+  vkDestroyPrivateDataSlot <- getFirstDeviceProcAddr [(Ptr "vkDestroyPrivateDataSlotEXT"#), (Ptr "vkDestroyPrivateDataSlot"#)]
+  vkSetPrivateData <- getFirstDeviceProcAddr [(Ptr "vkSetPrivateDataEXT"#), (Ptr "vkSetPrivateData"#)]
+  vkGetPrivateData <- getFirstDeviceProcAddr [(Ptr "vkGetPrivateDataEXT"#), (Ptr "vkGetPrivateData"#)]
+  vkCmdCopyBuffer2 <- getFirstDeviceProcAddr [(Ptr "vkCmdCopyBuffer2KHR"#), (Ptr "vkCmdCopyBuffer2"#)]
+  vkCmdCopyImage2 <- getFirstDeviceProcAddr [(Ptr "vkCmdCopyImage2KHR"#), (Ptr "vkCmdCopyImage2"#)]
+  vkCmdBlitImage2 <- getFirstDeviceProcAddr [(Ptr "vkCmdBlitImage2KHR"#), (Ptr "vkCmdBlitImage2"#)]
+  vkCmdCopyBufferToImage2 <- getFirstDeviceProcAddr [(Ptr "vkCmdCopyBufferToImage2KHR"#), (Ptr "vkCmdCopyBufferToImage2"#)]
+  vkCmdCopyImageToBuffer2 <- getFirstDeviceProcAddr [(Ptr "vkCmdCopyImageToBuffer2KHR"#), (Ptr "vkCmdCopyImageToBuffer2"#)]
+  vkCmdResolveImage2 <- getFirstDeviceProcAddr [(Ptr "vkCmdResolveImage2KHR"#), (Ptr "vkCmdResolveImage2"#)]
   vkCmdSetFragmentShadingRateKHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetFragmentShadingRateKHR"#)
   vkCmdSetFragmentShadingRateEnumNV <- getDeviceProcAddr' handle (Ptr "vkCmdSetFragmentShadingRateEnumNV"#)
   vkGetAccelerationStructureBuildSizesKHR <- getDeviceProcAddr' handle (Ptr "vkGetAccelerationStructureBuildSizesKHR"#)
   vkCmdSetVertexInputEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetVertexInputEXT"#)
   vkCmdSetColorWriteEnableEXT <- getDeviceProcAddr' handle (Ptr "vkCmdSetColorWriteEnableEXT"#)
-  vkCmdSetEvent2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdSetEvent2KHR"#)
-  vkCmdResetEvent2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdResetEvent2KHR"#)
-  vkCmdWaitEvents2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdWaitEvents2KHR"#)
-  vkCmdPipelineBarrier2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdPipelineBarrier2KHR"#)
-  vkQueueSubmit2KHR <- getDeviceProcAddr' handle (Ptr "vkQueueSubmit2KHR"#)
-  vkCmdWriteTimestamp2KHR <- getDeviceProcAddr' handle (Ptr "vkCmdWriteTimestamp2KHR"#)
+  vkCmdSetEvent2 <- getFirstDeviceProcAddr [(Ptr "vkCmdSetEvent2KHR"#), (Ptr "vkCmdSetEvent2"#)]
+  vkCmdResetEvent2 <- getFirstDeviceProcAddr [(Ptr "vkCmdResetEvent2KHR"#), (Ptr "vkCmdResetEvent2"#)]
+  vkCmdWaitEvents2 <- getFirstDeviceProcAddr [(Ptr "vkCmdWaitEvents2KHR"#), (Ptr "vkCmdWaitEvents2"#)]
+  vkCmdPipelineBarrier2 <- getFirstDeviceProcAddr [(Ptr "vkCmdPipelineBarrier2KHR"#), (Ptr "vkCmdPipelineBarrier2"#)]
+  vkQueueSubmit2 <- getFirstDeviceProcAddr [(Ptr "vkQueueSubmit2KHR"#), (Ptr "vkQueueSubmit2"#)]
+  vkCmdWriteTimestamp2 <- getFirstDeviceProcAddr [(Ptr "vkCmdWriteTimestamp2KHR"#), (Ptr "vkCmdWriteTimestamp2"#)]
   vkCmdWriteBufferMarker2AMD <- getDeviceProcAddr' handle (Ptr "vkCmdWriteBufferMarker2AMD"#)
   vkGetQueueCheckpointData2NV <- getDeviceProcAddr' handle (Ptr "vkGetQueueCheckpointData2NV"#)
   vkCreateCuModuleNVX <- getDeviceProcAddr' handle (Ptr "vkCreateCuModuleNVX"#)
@@ -1466,8 +1466,8 @@
   vkSetBufferCollectionImageConstraintsFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkSetBufferCollectionImageConstraintsFUCHSIA"#)
   vkDestroyBufferCollectionFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkDestroyBufferCollectionFUCHSIA"#)
   vkGetBufferCollectionPropertiesFUCHSIA <- getDeviceProcAddr' handle (Ptr "vkGetBufferCollectionPropertiesFUCHSIA"#)
-  vkCmdBeginRenderingKHR <- getDeviceProcAddr' handle (Ptr "vkCmdBeginRenderingKHR"#)
-  vkCmdEndRenderingKHR <- getDeviceProcAddr' handle (Ptr "vkCmdEndRenderingKHR"#)
+  vkCmdBeginRendering <- getFirstDeviceProcAddr [(Ptr "vkCmdBeginRenderingKHR"#), (Ptr "vkCmdBeginRendering"#)]
+  vkCmdEndRendering <- getFirstDeviceProcAddr [(Ptr "vkCmdEndRenderingKHR"#), (Ptr "vkCmdEndRendering"#)]
   pure $ DeviceCmds handle
     (castFunPtr @_ @(Ptr Device_T -> ("pName" ::: Ptr CChar) -> IO PFN_vkVoidFunction) vkGetDeviceProcAddr)
     (castFunPtr @_ @(Ptr Device_T -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyDevice)
@@ -1660,9 +1660,9 @@
     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr BufferMemoryRequirementsInfo2) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetBufferMemoryRequirements2)
     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr (SomeStruct ImageMemoryRequirementsInfo2)) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetImageMemoryRequirements2)
     (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr ImageSparseMemoryRequirementsInfo2) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ()) vkGetImageSparseMemoryRequirements2)
-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceBufferMemoryRequirementsKHR) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetDeviceBufferMemoryRequirementsKHR)
-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirementsKHR) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetDeviceImageMemoryRequirementsKHR)
-    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirementsKHR) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ()) vkGetDeviceImageSparseMemoryRequirementsKHR)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceBufferMemoryRequirements) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetDeviceBufferMemoryRequirements)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirements) -> ("pMemoryRequirements" ::: Ptr (SomeStruct MemoryRequirements2)) -> IO ()) vkGetDeviceImageMemoryRequirements)
+    (castFunPtr @_ @(Ptr Device_T -> ("pInfo" ::: Ptr DeviceImageMemoryRequirements) -> ("pSparseMemoryRequirementCount" ::: Ptr Word32) -> ("pSparseMemoryRequirements" ::: Ptr SparseImageMemoryRequirements2) -> IO ()) vkGetDeviceImageSparseMemoryRequirements)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr (SomeStruct SamplerYcbcrConversionCreateInfo)) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pYcbcrConversion" ::: Ptr SamplerYcbcrConversion) -> IO Result) vkCreateSamplerYcbcrConversion)
     (castFunPtr @_ @(Ptr Device_T -> SamplerYcbcrConversion -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroySamplerYcbcrConversion)
     (castFunPtr @_ @(Ptr Device_T -> ("pQueueInfo" ::: Ptr DeviceQueueInfo2) -> ("pQueue" ::: Ptr (Ptr Queue_T)) -> IO ()) vkGetDeviceQueue2)
@@ -1773,45 +1773,45 @@
     (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Word32) vkGetDeferredOperationMaxConcurrencyKHR)
     (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Result) vkGetDeferredOperationResultKHR)
     (castFunPtr @_ @(Ptr Device_T -> DeferredOperationKHR -> IO Result) vkDeferredOperationJoinKHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> CullModeFlags -> IO ()) vkCmdSetCullModeEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> FrontFace -> IO ()) vkCmdSetFrontFaceEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> PrimitiveTopology -> IO ()) vkCmdSetPrimitiveTopologyEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ()) vkCmdSetViewportWithCountEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetScissorWithCountEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> ("pStrides" ::: Ptr DeviceSize) -> IO ()) vkCmdBindVertexBuffers2EXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthTestEnable" ::: Bool32) -> IO ()) vkCmdSetDepthTestEnableEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthWriteEnable" ::: Bool32) -> IO ()) vkCmdSetDepthWriteEnableEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthCompareOp" ::: CompareOp) -> IO ()) vkCmdSetDepthCompareOpEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBoundsTestEnable" ::: Bool32) -> IO ()) vkCmdSetDepthBoundsTestEnableEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("stencilTestEnable" ::: Bool32) -> IO ()) vkCmdSetStencilTestEnableEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> IO ()) vkCmdSetStencilOpEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> CullModeFlags -> IO ()) vkCmdSetCullMode)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> FrontFace -> IO ()) vkCmdSetFrontFace)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> PrimitiveTopology -> IO ()) vkCmdSetPrimitiveTopology)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("viewportCount" ::: Word32) -> ("pViewports" ::: Ptr Viewport) -> IO ()) vkCmdSetViewportWithCount)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("scissorCount" ::: Word32) -> ("pScissors" ::: Ptr Rect2D) -> IO ()) vkCmdSetScissorWithCount)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("firstBinding" ::: Word32) -> ("bindingCount" ::: Word32) -> ("pBuffers" ::: Ptr Buffer) -> ("pOffsets" ::: Ptr DeviceSize) -> ("pSizes" ::: Ptr DeviceSize) -> ("pStrides" ::: Ptr DeviceSize) -> IO ()) vkCmdBindVertexBuffers2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthTestEnable" ::: Bool32) -> IO ()) vkCmdSetDepthTestEnable)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthWriteEnable" ::: Bool32) -> IO ()) vkCmdSetDepthWriteEnable)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthCompareOp" ::: CompareOp) -> IO ()) vkCmdSetDepthCompareOp)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBoundsTestEnable" ::: Bool32) -> IO ()) vkCmdSetDepthBoundsTestEnable)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("stencilTestEnable" ::: Bool32) -> IO ()) vkCmdSetStencilTestEnable)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("faceMask" ::: StencilFaceFlags) -> ("failOp" ::: StencilOp) -> ("passOp" ::: StencilOp) -> ("depthFailOp" ::: StencilOp) -> CompareOp -> IO ()) vkCmdSetStencilOp)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("patchControlPoints" ::: Word32) -> IO ()) vkCmdSetPatchControlPointsEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("rasterizerDiscardEnable" ::: Bool32) -> IO ()) vkCmdSetRasterizerDiscardEnableEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBiasEnable" ::: Bool32) -> IO ()) vkCmdSetDepthBiasEnableEXT)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("rasterizerDiscardEnable" ::: Bool32) -> IO ()) vkCmdSetRasterizerDiscardEnable)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("depthBiasEnable" ::: Bool32) -> IO ()) vkCmdSetDepthBiasEnable)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> LogicOp -> IO ()) vkCmdSetLogicOpEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("primitiveRestartEnable" ::: Bool32) -> IO ()) vkCmdSetPrimitiveRestartEnableEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr PrivateDataSlotCreateInfoEXT) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPrivateDataSlot" ::: Ptr PrivateDataSlotEXT) -> IO Result) vkCreatePrivateDataSlotEXT)
-    (castFunPtr @_ @(Ptr Device_T -> PrivateDataSlotEXT -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPrivateDataSlotEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlotEXT -> ("data" ::: Word64) -> IO Result) vkSetPrivateDataEXT)
-    (castFunPtr @_ @(Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlotEXT -> ("pData" ::: Ptr Word64) -> IO ()) vkGetPrivateDataEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyBufferInfo" ::: Ptr CopyBufferInfo2KHR) -> IO ()) vkCmdCopyBuffer2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyImageInfo" ::: Ptr CopyImageInfo2KHR) -> IO ()) vkCmdCopyImage2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBlitImageInfo" ::: Ptr BlitImageInfo2KHR) -> IO ()) vkCmdBlitImage2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyBufferToImageInfo" ::: Ptr CopyBufferToImageInfo2KHR) -> IO ()) vkCmdCopyBufferToImage2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyImageToBufferInfo" ::: Ptr CopyImageToBufferInfo2KHR) -> IO ()) vkCmdCopyImageToBuffer2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pResolveImageInfo" ::: Ptr ResolveImageInfo2KHR) -> IO ()) vkCmdResolveImage2KHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("primitiveRestartEnable" ::: Bool32) -> IO ()) vkCmdSetPrimitiveRestartEnable)
+    (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr PrivateDataSlotCreateInfo) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pPrivateDataSlot" ::: Ptr PrivateDataSlot) -> IO Result) vkCreatePrivateDataSlot)
+    (castFunPtr @_ @(Ptr Device_T -> PrivateDataSlot -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyPrivateDataSlot)
+    (castFunPtr @_ @(Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlot -> ("data" ::: Word64) -> IO Result) vkSetPrivateData)
+    (castFunPtr @_ @(Ptr Device_T -> ObjectType -> ("objectHandle" ::: Word64) -> PrivateDataSlot -> ("pData" ::: Ptr Word64) -> IO ()) vkGetPrivateData)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyBufferInfo" ::: Ptr CopyBufferInfo2) -> IO ()) vkCmdCopyBuffer2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyImageInfo" ::: Ptr CopyImageInfo2) -> IO ()) vkCmdCopyImage2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pBlitImageInfo" ::: Ptr BlitImageInfo2) -> IO ()) vkCmdBlitImage2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyBufferToImageInfo" ::: Ptr CopyBufferToImageInfo2) -> IO ()) vkCmdCopyBufferToImage2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pCopyImageToBufferInfo" ::: Ptr CopyImageToBufferInfo2) -> IO ()) vkCmdCopyImageToBuffer2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pResolveImageInfo" ::: Ptr ResolveImageInfo2) -> IO ()) vkCmdResolveImage2)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pFragmentSize" ::: Ptr Extent2D) -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ()) vkCmdSetFragmentShadingRateKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> FragmentShadingRateNV -> ("combinerOps" ::: Ptr (FixedArray 2 FragmentShadingRateCombinerOpKHR)) -> IO ()) vkCmdSetFragmentShadingRateEnumNV)
     (castFunPtr @_ @(Ptr Device_T -> AccelerationStructureBuildTypeKHR -> ("pBuildInfo" ::: Ptr AccelerationStructureBuildGeometryInfoKHR) -> ("pMaxPrimitiveCounts" ::: Ptr Word32) -> ("pSizeInfo" ::: Ptr AccelerationStructureBuildSizesInfoKHR) -> IO ()) vkGetAccelerationStructureBuildSizesKHR)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("vertexBindingDescriptionCount" ::: Word32) -> ("pVertexBindingDescriptions" ::: Ptr VertexInputBindingDescription2EXT) -> ("vertexAttributeDescriptionCount" ::: Word32) -> ("pVertexAttributeDescriptions" ::: Ptr VertexInputAttributeDescription2EXT) -> IO ()) vkCmdSetVertexInputEXT)
     (castFunPtr @_ @(Ptr CommandBuffer_T -> ("attachmentCount" ::: Word32) -> ("pColorWriteEnables" ::: Ptr Bool32) -> IO ()) vkCmdSetColorWriteEnableEXT)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr DependencyInfoKHR) -> IO ()) vkCmdSetEvent2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags2KHR) -> IO ()) vkCmdResetEvent2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr DependencyInfoKHR) -> IO ()) vkCmdWaitEvents2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDependencyInfo" ::: Ptr DependencyInfoKHR) -> IO ()) vkCmdPipelineBarrier2KHR)
-    (castFunPtr @_ @(Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SomeStruct SubmitInfo2KHR)) -> Fence -> IO Result) vkQueueSubmit2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdWriteTimestamp2KHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ()) vkCmdWriteBufferMarker2AMD)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("pDependencyInfo" ::: Ptr DependencyInfo) -> IO ()) vkCmdSetEvent2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> Event -> ("stageMask" ::: PipelineStageFlags2) -> IO ()) vkCmdResetEvent2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("eventCount" ::: Word32) -> ("pEvents" ::: Ptr Event) -> ("pDependencyInfos" ::: Ptr DependencyInfo) -> IO ()) vkCmdWaitEvents2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pDependencyInfo" ::: Ptr DependencyInfo) -> IO ()) vkCmdPipelineBarrier2)
+    (castFunPtr @_ @(Ptr Queue_T -> ("submitCount" ::: Word32) -> ("pSubmits" ::: Ptr (SomeStruct SubmitInfo2)) -> Fence -> IO Result) vkQueueSubmit2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2 -> QueryPool -> ("query" ::: Word32) -> IO ()) vkCmdWriteTimestamp2)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> PipelineStageFlags2 -> ("dstBuffer" ::: Buffer) -> ("dstOffset" ::: DeviceSize) -> ("marker" ::: Word32) -> IO ()) vkCmdWriteBufferMarker2AMD)
     (castFunPtr @_ @(Ptr Queue_T -> ("pCheckpointDataCount" ::: Ptr Word32) -> ("pCheckpointData" ::: Ptr CheckpointData2NV) -> IO ()) vkGetQueueCheckpointData2NV)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CuModuleCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pModule" ::: Ptr CuModuleNVX) -> IO Result) vkCreateCuModuleNVX)
     (castFunPtr @_ @(Ptr Device_T -> ("pCreateInfo" ::: Ptr CuFunctionCreateInfoNVX) -> ("pAllocator" ::: Ptr AllocationCallbacks) -> ("pFunction" ::: Ptr CuFunctionNVX) -> IO Result) vkCreateCuFunctionNVX)
@@ -1825,6 +1825,6 @@
     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pImageConstraintsInfo" ::: Ptr ImageConstraintsInfoFUCHSIA) -> IO Result) vkSetBufferCollectionImageConstraintsFUCHSIA)
     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pAllocator" ::: Ptr AllocationCallbacks) -> IO ()) vkDestroyBufferCollectionFUCHSIA)
     (castFunPtr @_ @(Ptr Device_T -> BufferCollectionFUCHSIA -> ("pProperties" ::: Ptr BufferCollectionPropertiesFUCHSIA) -> IO Result) vkGetBufferCollectionPropertiesFUCHSIA)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfoKHR)) -> IO ()) vkCmdBeginRenderingKHR)
-    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndRenderingKHR)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> ("pRenderingInfo" ::: Ptr (SomeStruct RenderingInfo)) -> IO ()) vkCmdBeginRendering)
+    (castFunPtr @_ @(Ptr CommandBuffer_T -> IO ()) vkCmdEndRendering)
 
diff --git a/src/Vulkan/Exception.hs b/src/Vulkan/Exception.hs
--- a/src/Vulkan/Exception.hs
+++ b/src/Vulkan/Exception.hs
@@ -35,7 +35,6 @@
   ERROR_FORMAT_NOT_SUPPORTED -> "A requested format is not supported on this device"
   ERROR_FRAGMENTED_POOL -> "A pool allocation has failed due to fragmentation of the pool's memory"
   ERROR_UNKNOWN -> "An unknown error has occurred; either the application has provided invalid input, or an implementation failure has occurred"
-  PIPELINE_COMPILE_REQUIRED_EXT -> "A requested pipeline creation would have required compilation, but the application requested compilation to not be performed"
   OPERATION_NOT_DEFERRED_KHR -> "A deferred operation was requested and no operations were deferred"
   OPERATION_DEFERRED_KHR -> "A deferred operation was requested and at least some of the work was deferred"
   THREAD_DONE_KHR -> "A deferred operation is not complete but there is no work remaining to assign to additional threads"
@@ -47,6 +46,7 @@
   SUBOPTIMAL_KHR -> "A swapchain no longer matches the surface properties exactly, but can still be used to present to the surface successfully"
   ERROR_NATIVE_WINDOW_IN_USE_KHR -> "The requested window is already in use by Vulkan or another API in a manner which prevents it from being used again"
   ERROR_SURFACE_LOST_KHR -> "A surface is no longer available"
+  PIPELINE_COMPILE_REQUIRED -> "A requested pipeline creation would have required compilation, but the application requested compilation to not be performed"
   ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS -> "A buffer creation or memory allocation failed because the requested address is not available"
   ERROR_FRAGMENTATION -> "A descriptor pool creation has failed due to fragmentation"
   ERROR_INVALID_EXTERNAL_HANDLE -> "An external handle is not a valid handle of the specified type"
diff --git a/src/Vulkan/Extensions.hs b/src/Vulkan/Extensions.hs
--- a/src/Vulkan/Extensions.hs
+++ b/src/Vulkan/Extensions.hs
@@ -166,6 +166,7 @@
                           , module Vulkan.Extensions.VK_KHR_get_memory_requirements2
                           , module Vulkan.Extensions.VK_KHR_get_physical_device_properties2
                           , module Vulkan.Extensions.VK_KHR_get_surface_capabilities2
+                          , module Vulkan.Extensions.VK_KHR_global_priority
                           , module Vulkan.Extensions.VK_KHR_image_format_list
                           , module Vulkan.Extensions.VK_KHR_imageless_framebuffer
                           , module Vulkan.Extensions.VK_KHR_incremental_present
@@ -433,6 +434,7 @@
 import Vulkan.Extensions.VK_KHR_get_memory_requirements2
 import Vulkan.Extensions.VK_KHR_get_physical_device_properties2
 import Vulkan.Extensions.VK_KHR_get_surface_capabilities2
+import Vulkan.Extensions.VK_KHR_global_priority
 import Vulkan.Extensions.VK_KHR_image_format_list
 import Vulkan.Extensions.VK_KHR_imageless_framebuffer
 import Vulkan.Extensions.VK_KHR_incremental_present
diff --git a/src/Vulkan/Extensions/Handles.hs b/src/Vulkan/Extensions/Handles.hs
--- a/src/Vulkan/Extensions/Handles.hs
+++ b/src/Vulkan/Extensions/Handles.hs
@@ -7,7 +7,6 @@
                                   , PerformanceConfigurationINTEL(..)
                                   , BufferCollectionFUCHSIA(..)
                                   , DeferredOperationKHR(..)
-                                  , PrivateDataSlotEXT(..)
                                   , CuModuleNVX(..)
                                   , CuFunctionNVX(..)
                                   , DisplayKHR(..)
@@ -42,6 +41,7 @@
                                   , PipelineCache(..)
                                   , DescriptorUpdateTemplate(..)
                                   , SamplerYcbcrConversion(..)
+                                  , PrivateDataSlot(..)
                                   ) where
 
 import GHC.Show (showParen)
@@ -63,7 +63,6 @@
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_DISPLAY_MODE_KHR))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL))
-import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_SURFACE_KHR))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_SWAPCHAIN_KHR))
 import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_VALIDATION_CACHE_EXT))
@@ -86,6 +85,7 @@
 import Vulkan.Core10.Handles (Pipeline(..))
 import Vulkan.Core10.Handles (PipelineCache(..))
 import Vulkan.Core10.Handles (PipelineLayout(..))
+import Vulkan.Core13.Handles (PrivateDataSlot(..))
 import Vulkan.Core10.Handles (QueryPool(..))
 import Vulkan.Core10.Handles (Queue(..))
 import Vulkan.Core10.Handles (RenderPass(..))
@@ -247,24 +247,6 @@
   objectTypeAndHandle (DeferredOperationKHR h) = (OBJECT_TYPE_DEFERRED_OPERATION_KHR, h)
 instance Show DeferredOperationKHR where
   showsPrec p (DeferredOperationKHR x) = showParen (p >= 11) (showString "DeferredOperationKHR 0x" . showHex x)
-
-
--- | VkPrivateDataSlotEXT - Opaque handle to a private data slot object
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'Vulkan.Extensions.VK_EXT_private_data.createPrivateDataSlotEXT',
--- 'Vulkan.Extensions.VK_EXT_private_data.destroyPrivateDataSlotEXT',
--- 'Vulkan.Extensions.VK_EXT_private_data.getPrivateDataEXT',
--- 'Vulkan.Extensions.VK_EXT_private_data.setPrivateDataEXT'
-newtype PrivateDataSlotEXT = PrivateDataSlotEXT Word64
-  deriving newtype (Eq, Ord, Storable, Zero)
-  deriving anyclass (IsHandle)
-instance HasObjectType PrivateDataSlotEXT where
-  objectTypeAndHandle (PrivateDataSlotEXT h) = (OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, h)
-instance Show PrivateDataSlotEXT where
-  showsPrec p (PrivateDataSlotEXT x) = showParen (p >= 11) (showString "PrivateDataSlotEXT 0x" . showHex x)
 
 
 -- | VkCuModuleNVX - Stub description of VkCuModuleNVX
diff --git a/src/Vulkan/Extensions/Handles.hs-boot b/src/Vulkan/Extensions/Handles.hs-boot
--- a/src/Vulkan/Extensions/Handles.hs-boot
+++ b/src/Vulkan/Extensions/Handles.hs-boot
@@ -12,7 +12,6 @@
                                   , DisplayModeKHR
                                   , IndirectCommandsLayoutNV
                                   , PerformanceConfigurationINTEL
-                                  , PrivateDataSlotEXT
                                   , SurfaceKHR
                                   , SwapchainKHR
                                   , ValidationCacheEXT
@@ -54,9 +53,6 @@
 
 
 data PerformanceConfigurationINTEL
-
-
-data PrivateDataSlotEXT
 
 
 data SurfaceKHR
diff --git a/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs b/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
--- a/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
+++ b/src/Vulkan/Extensions/VK_AMD_buffer_marker.hs
@@ -82,7 +82,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_buffer_marker Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -207,7 +207,7 @@
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-synchronization2-06489# If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
 --     feature is not enabled, @pipelineStage@ /must/ not be
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_NONE_KHR'
+--     'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_NONE_KHR'
 --
 -- -   #VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798# @dstOffset@ /must/
 --     be less than or equal to the size of @dstBuffer@ minus @4@
diff --git a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
--- a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
+++ b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs
@@ -89,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs-boot b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_device_coherent_memory.hs-boot
@@ -89,7 +89,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_device_coherent_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs b/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs
--- a/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs
+++ b/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs-boot b/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_display_native_hdr.hs-boot
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_display_native_hdr Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs b/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
--- a/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
+++ b/src/Vulkan/Extensions/VK_AMD_draw_indirect_count.hs
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_draw_indirect_count Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_draw_indirect_count Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_gcn_shader.hs b/src/Vulkan/Extensions/VK_AMD_gcn_shader.hs
--- a/src/Vulkan/Extensions/VK_AMD_gcn_shader.hs
+++ b/src/Vulkan/Extensions/VK_AMD_gcn_shader.hs
@@ -78,7 +78,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gcn_shader Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_gcn_shader Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_gpu_shader_half_float.hs b/src/Vulkan/Extensions/VK_AMD_gpu_shader_half_float.hs
--- a/src/Vulkan/Extensions/VK_AMD_gpu_shader_half_float.hs
+++ b/src/Vulkan/Extensions/VK_AMD_gpu_shader_half_float.hs
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpu_shader_half_float Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_gpu_shader_half_float Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_gpu_shader_int16.hs b/src/Vulkan/Extensions/VK_AMD_gpu_shader_int16.hs
--- a/src/Vulkan/Extensions/VK_AMD_gpu_shader_int16.hs
+++ b/src/Vulkan/Extensions/VK_AMD_gpu_shader_int16.hs
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_gpu_shader_int16 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_gpu_shader_int16 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs b/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs
--- a/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs
+++ b/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs-boot b/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_memory_overallocation_behavior.hs-boot
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_memory_overallocation_behavior Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs b/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs
--- a/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs
+++ b/src/Vulkan/Extensions/VK_AMD_mixed_attachment_samples.hs
@@ -74,7 +74,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_negative_viewport_height.hs b/src/Vulkan/Extensions/VK_AMD_negative_viewport_height.hs
--- a/src/Vulkan/Extensions/VK_AMD_negative_viewport_height.hs
+++ b/src/Vulkan/Extensions/VK_AMD_negative_viewport_height.hs
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_negative_viewport_height Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_negative_viewport_height Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
--- a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
+++ b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_pipeline_compiler_control.hs-boot
@@ -97,7 +97,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_pipeline_compiler_control Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs b/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs
--- a/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs
+++ b/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs
@@ -160,7 +160,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -274,11 +274,11 @@
 
 -- | 'RASTERIZATION_ORDER_STRICT_AMD' specifies that operations for each
 -- primitive in a subpass /must/ occur in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
 pattern RASTERIZATION_ORDER_STRICT_AMD  = RasterizationOrderAMD 0
 -- | 'RASTERIZATION_ORDER_RELAXED_AMD' specifies that operations for each
 -- primitive in a subpass /may/ not occur in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
 pattern RASTERIZATION_ORDER_RELAXED_AMD = RasterizationOrderAMD 1
 {-# complete RASTERIZATION_ORDER_STRICT_AMD,
              RASTERIZATION_ORDER_RELAXED_AMD :: RasterizationOrderAMD #-}
diff --git a/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs-boot b/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_rasterization_order.hs-boot
@@ -160,7 +160,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_rasterization_order Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_ballot.hs b/src/Vulkan/Extensions/VK_AMD_shader_ballot.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_ballot.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_ballot.hs
@@ -82,7 +82,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_ballot Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_ballot Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs b/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs
@@ -147,7 +147,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs-boot b/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_shader_core_properties.hs-boot
@@ -147,7 +147,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs
@@ -91,7 +91,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs-boot b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_shader_core_properties2.hs-boot
@@ -91,7 +91,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_core_properties2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_explicit_vertex_parameter.hs b/src/Vulkan/Extensions/VK_AMD_shader_explicit_vertex_parameter.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_explicit_vertex_parameter.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_explicit_vertex_parameter.hs
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_explicit_vertex_parameter Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_explicit_vertex_parameter Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_fragment_mask.hs b/src/Vulkan/Extensions/VK_AMD_shader_fragment_mask.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_fragment_mask.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_fragment_mask.hs
@@ -76,7 +76,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentMaskAMD FragmentMaskAMD>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentMaskAMD FragmentMaskAMD>
 --
 -- == Examples
 --
@@ -126,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_fragment_mask Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_fragment_mask Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_image_load_store_lod.hs b/src/Vulkan/Extensions/VK_AMD_shader_image_load_store_lod.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_image_load_store_lod.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_image_load_store_lod.hs
@@ -76,7 +76,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_image_load_store_lod Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_image_load_store_lod Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_info.hs b/src/Vulkan/Extensions/VK_AMD_shader_info.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_info.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_info.hs
@@ -148,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_info.hs-boot b/src/Vulkan/Extensions/VK_AMD_shader_info.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_shader_info.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_shader_info.hs-boot
@@ -148,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_info Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_shader_trinary_minmax.hs b/src/Vulkan/Extensions/VK_AMD_shader_trinary_minmax.hs
--- a/src/Vulkan/Extensions/VK_AMD_shader_trinary_minmax.hs
+++ b/src/Vulkan/Extensions/VK_AMD_shader_trinary_minmax.hs
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_shader_trinary_minmax Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_shader_trinary_minmax Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs b/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
--- a/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
+++ b/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs
@@ -91,7 +91,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
 --
 -- == Examples
 --
@@ -148,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs-boot b/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs-boot
--- a/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs-boot
+++ b/src/Vulkan/Extensions/VK_AMD_texture_gather_bias_lod.hs-boot
@@ -91,7 +91,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageGatherBiasLodAMD ImageGatherBiasLodAMD>
 --
 -- == Examples
 --
@@ -148,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_AMD_texture_gather_bias_lod Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
--- a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs
@@ -271,7 +271,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -289,9 +289,6 @@
                                                                              , ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
                                                                              , pattern ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME
                                                                              , AHardwareBuffer
-                                                                             , FormatFeatureFlagBits2KHR(..)
-                                                                             , FormatFeatureFlags2KHR
-                                                                             , Flags64
                                                                              ) where
 
 import Vulkan.Internal.Utils (traceAroundEvent)
@@ -349,7 +346,7 @@
 import Vulkan.CStruct.Extends (Extensible(..))
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
 import Vulkan.CStruct.Extends (PeekChain)
 import Vulkan.CStruct.Extends (PeekChain(..))
 import Vulkan.CStruct.Extends (PokeChain)
@@ -369,9 +366,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -521,7 +515,7 @@
 --     @buffer@ is not @NULL@, it /must/ be a valid Android hardware buffer
 --     object with @AHardwareBuffer_Desc@::@usage@ compatible with Vulkan
 --     as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer Android Hardware Buffers>
 --
 -- == Valid Usage (Implicit)
 --
@@ -584,7 +578,7 @@
 --
 -- The @androidHardwareBufferUsage@ field /must/ include Android hardware
 -- buffer usage flags listed in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-usage AHardwareBuffer Usage Equivalence>
 -- table when the corresponding Vulkan image usage or image creation flags
 -- are included in the @usage@ or @flags@ fields of
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceImageFormatInfo2'.
@@ -821,7 +815,7 @@
 -- = Description
 --
 -- If the Android hardware buffer has one of the formats listed in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formats Format Equivalence table>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-formats Format Equivalence table>,
 -- then @format@ /must/ have the equivalent Vulkan format listed in the
 -- table. Otherwise, @format@ /may/ be
 -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', indicating the Android
@@ -842,7 +836,7 @@
 --
 -- The @formatFeatures@ member only indicates the features available when
 -- using an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external-format image>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-external-android-hardware-buffer-external-formats external-format image>
 -- created from the Android hardware buffer. Images from Android hardware
 -- buffers with a format other than
 -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' are subject to the format
@@ -879,7 +873,7 @@
 -- with that format. If @format@ is
 -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', all members of
 -- @samplerYcbcrConversionComponents@ /must/ be the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>.
 --
 -- Implementations /may/ not always be able to determine the color model,
 -- numerical range, or chroma offsets of the image contents, so the values
@@ -1088,7 +1082,7 @@
 -- 'Vulkan.Core11.Enums.ChromaLocation.ChromaLocation',
 -- 'Vulkan.Core10.ImageView.ComponentMapping',
 -- 'Vulkan.Core10.Enums.Format.Format',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR',
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlags2',
 -- 'Vulkan.Core11.Enums.SamplerYcbcrModelConversion.SamplerYcbcrModelConversion',
 -- 'Vulkan.Core11.Enums.SamplerYcbcrRange.SamplerYcbcrRange',
 -- 'Vulkan.Core10.Enums.StructureType.StructureType'
@@ -1102,7 +1096,7 @@
     externalFormat :: Word64
   , -- | @formatFeatures@ describes the capabilities of this external format when
     -- used with an image bound to memory imported from @buffer@.
-    formatFeatures :: FormatFeatureFlags2KHR
+    formatFeatures :: FormatFeatureFlags2
   , -- | @samplerYcbcrConversionComponents@ is the component swizzle that
     -- /should/ be used in
     -- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'.
@@ -1133,7 +1127,7 @@
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr Format)) (format)
     poke ((p `plusPtr` 24 :: Ptr Word64)) (externalFormat)
-    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2KHR)) (formatFeatures)
+    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2)) (formatFeatures)
     poke ((p `plusPtr` 40 :: Ptr ComponentMapping)) (samplerYcbcrConversionComponents)
     poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrModelConversion)) (suggestedYcbcrModel)
     poke ((p `plusPtr` 60 :: Ptr SamplerYcbcrRange)) (suggestedYcbcrRange)
@@ -1147,7 +1141,7 @@
     poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
     poke ((p `plusPtr` 16 :: Ptr Format)) (zero)
     poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2KHR)) (zero)
+    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2)) (zero)
     poke ((p `plusPtr` 40 :: Ptr ComponentMapping)) (zero)
     poke ((p `plusPtr` 56 :: Ptr SamplerYcbcrModelConversion)) (zero)
     poke ((p `plusPtr` 60 :: Ptr SamplerYcbcrRange)) (zero)
@@ -1159,7 +1153,7 @@
   peekCStruct p = do
     format <- peek @Format ((p `plusPtr` 16 :: Ptr Format))
     externalFormat <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
-    formatFeatures <- peek @FormatFeatureFlags2KHR ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2KHR))
+    formatFeatures <- peek @FormatFeatureFlags2 ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2))
     samplerYcbcrConversionComponents <- peekCStruct @ComponentMapping ((p `plusPtr` 40 :: Ptr ComponentMapping))
     suggestedYcbcrModel <- peek @SamplerYcbcrModelConversion ((p `plusPtr` 56 :: Ptr SamplerYcbcrModelConversion))
     suggestedYcbcrRange <- peek @SamplerYcbcrRange ((p `plusPtr` 60 :: Ptr SamplerYcbcrRange))
diff --git a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
--- a/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
+++ b/src/Vulkan/Extensions/VK_ANDROID_external_memory_android_hardware_buffer.hs-boot
@@ -271,7 +271,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ANDROID_external_memory_android_hardware_buffer Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs b/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs
--- a/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs
+++ b/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs
@@ -45,7 +45,7 @@
 -- == Description
 --
 -- Renderpasses, and specifically
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependencies>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependencies>
 -- enable much of the same functionality as the framebuffer fetch and pixel
 -- local storage extensions did for OpenGL ES. But certain techniques such
 -- as programmable blending are awkward or impractical to implement with
@@ -58,7 +58,7 @@
 -- rasterization order, without explicit synchronization.
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
 -- for more information.
 --
 -- == New Structures
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_rasterization_order_attachment_access Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_rasterization_order_attachment_access Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs-boot b/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs-boot
--- a/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs-boot
+++ b/src/Vulkan/Extensions/VK_ARM_rasterization_order_attachment_access.hs-boot
@@ -45,7 +45,7 @@
 -- == Description
 --
 -- Renderpasses, and specifically
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependencies>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies subpass self-dependencies>
 -- enable much of the same functionality as the framebuffer fetch and pixel
 -- local storage extensions did for OpenGL ES. But certain techniques such
 -- as programmable blending are awkward or impractical to implement with
@@ -58,7 +58,7 @@
 -- rasterization order, without explicit synchronization.
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-feedbackloop renderpass feedback loops>
 -- for more information.
 --
 -- == New Structures
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_ARM_rasterization_order_attachment_access Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_ARM_rasterization_order_attachment_access Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_4444_formats.hs b/src/Vulkan/Extensions/VK_EXT_4444_formats.hs
--- a/src/Vulkan/Extensions/VK_EXT_4444_formats.hs
+++ b/src/Vulkan/Extensions/VK_EXT_4444_formats.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Joshua Ashton
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2020-07-28
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -44,10 +53,9 @@
 --
 -- == Description
 --
--- This extension defines the
--- 'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT' and
--- 'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT' formats
--- which are defined in other current graphics APIs.
+-- This extension defines the 'FORMAT_A4R4G4B4_UNORM_PACK16_EXT' and
+-- 'FORMAT_A4B4G4R4_UNORM_PACK16_EXT' formats which are defined in other
+-- current graphics APIs.
 --
 -- This extension may be useful for building translation layers for those
 -- APIs or for porting applications that use these formats without having
@@ -73,14 +81,24 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Format.Format':
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT'
+--     -   'FORMAT_A4B4G4R4_UNORM_PACK16_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT'
+--     -   'FORMAT_A4R4G4B4_UNORM_PACK16_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. The format enumerants
+-- introduced by the extension are included in core Vulkan 1.3, with the
+-- EXT suffix omitted. However, runtime support for these formats is
+-- optional in core Vulkan 1.3, while if this extension is supported,
+-- runtime support is mandatory. The feature structure is not promoted. The
+-- original enum names are still available as aliases of the core
+-- functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-07-04 (Joshua Ashton)
@@ -94,11 +112,13 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_EXT_4444_formats  ( PhysicalDevice4444FormatsFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_4444_formats  ( pattern FORMAT_A4R4G4B4_UNORM_PACK16_EXT
+                                              , pattern FORMAT_A4B4G4R4_UNORM_PACK16_EXT
+                                              , PhysicalDevice4444FormatsFeaturesEXT(..)
                                               , EXT_4444_FORMATS_SPEC_VERSION
                                               , pattern EXT_4444_FORMATS_SPEC_VERSION
                                               , EXT_4444_FORMATS_EXTENSION_NAME
@@ -126,7 +146,17 @@
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.Format (Format(FORMAT_A4B4G4R4_UNORM_PACK16))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_A4R4G4B4_UNORM_PACK16))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT))
+-- No documentation found for TopLevel "VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT"
+pattern FORMAT_A4R4G4B4_UNORM_PACK16_EXT = FORMAT_A4R4G4B4_UNORM_PACK16
+
+
+-- No documentation found for TopLevel "VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT"
+pattern FORMAT_A4B4G4R4_UNORM_PACK16_EXT = FORMAT_A4B4G4R4_UNORM_PACK16
+
+
 -- | VkPhysicalDevice4444FormatsFeaturesEXT - Structure describing additional
 -- 4444 formats supported by an implementation
 --
@@ -148,6 +178,13 @@
 --
 -- == Valid Usage (Implicit)
 --
+-- Note
+--
+-- Although the formats defined by the @VK_EXT_4444_formats@ extension were
+-- promoted to Vulkan 1.3 as optional formats, the
+-- 'PhysicalDevice4444FormatsFeaturesEXT' structure was not promoted to
+-- Vulkan 1.3.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_4444_formats VK_EXT_4444_formats>,
@@ -157,8 +194,7 @@
   { -- | #features-formatA4R4G4B4# @formatA4R4G4B4@ indicates that the
     -- implementation /must/ support using a
     -- 'Vulkan.Core10.Enums.Format.Format' of
-    -- 'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT' with at
-    -- least the following
+    -- 'FORMAT_A4R4G4B4_UNORM_PACK16_EXT' with at least the following
     -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':
     --
     -- -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'
@@ -170,8 +206,7 @@
   , -- | #features-formatA4B4G4R4# @formatA4B4G4R4@ indicates that the
     -- implementation /must/ support using a
     -- 'Vulkan.Core10.Enums.Format.Format' of
-    -- 'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT' with at
-    -- least the following
+    -- 'FORMAT_A4B4G4R4_UNORM_PACK16_EXT' with at least the following
     -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits':
     --
     -- -   'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT'
diff --git a/src/Vulkan/Extensions/VK_EXT_4444_formats.hs-boot b/src/Vulkan/Extensions/VK_EXT_4444_formats.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_4444_formats.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_4444_formats.hs-boot
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Joshua Ashton
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2020-07-28
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -44,10 +53,9 @@
 --
 -- == Description
 --
--- This extension defines the
--- 'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT' and
--- 'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT' formats
--- which are defined in other current graphics APIs.
+-- This extension defines the 'FORMAT_A4R4G4B4_UNORM_PACK16_EXT' and
+-- 'FORMAT_A4B4G4R4_UNORM_PACK16_EXT' formats which are defined in other
+-- current graphics APIs.
 --
 -- This extension may be useful for building translation layers for those
 -- APIs or for porting applications that use these formats without having
@@ -73,14 +81,24 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Format.Format':
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A4B4G4R4_UNORM_PACK16_EXT'
+--     -   'FORMAT_A4B4G4R4_UNORM_PACK16_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_A4R4G4B4_UNORM_PACK16_EXT'
+--     -   'FORMAT_A4R4G4B4_UNORM_PACK16_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. The format enumerants
+-- introduced by the extension are included in core Vulkan 1.3, with the
+-- EXT suffix omitted. However, runtime support for these formats is
+-- optional in core Vulkan 1.3, while if this extension is supported,
+-- runtime support is mandatory. The feature structure is not promoted. The
+-- original enum names are still available as aliases of the core
+-- functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-07-04 (Joshua Ashton)
@@ -94,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_4444_formats Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_acquire_drm_display.hs b/src/Vulkan/Extensions/VK_EXT_acquire_drm_display.hs
--- a/src/Vulkan/Extensions/VK_EXT_acquire_drm_display.hs
+++ b/src/Vulkan/Extensions/VK_EXT_acquire_drm_display.hs
@@ -75,7 +75,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_drm_display Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_acquire_drm_display Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
--- a/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
+++ b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_acquire_xlib_display.hs-boot
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_acquire_xlib_display Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
--- a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
+++ b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -199,7 +199,7 @@
 --     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'
 --
 -- -   #VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-astc-decodeModeSharedExponent decodeModeSharedExponent>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-astc-decodeModeSharedExponent decodeModeSharedExponent>
 --     feature is not enabled, @decodeMode@ /must/ not be
 --     'Vulkan.Core10.Enums.Format.FORMAT_E5B9G9R9_UFLOAT_PACK32'
 --
@@ -209,7 +209,7 @@
 --
 -- -   #VUID-VkImageViewASTCDecodeModeEXT-format-04084# @format@ of the
 --     image view /must/ be one of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>
 --
 -- If @format@ uses sRGB encoding then the @decodeMode@ has no effect.
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs-boot b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_astc_decode_mode.hs-boot
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_astc_decode_mode Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
--- a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
+++ b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs
@@ -276,7 +276,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -355,9 +355,9 @@
 data PhysicalDeviceBlendOperationAdvancedFeaturesEXT = PhysicalDeviceBlendOperationAdvancedFeaturesEXT
   { -- | #features-advancedBlendCoherentOperations#
     -- @advancedBlendCoherentOperations@ specifies whether blending using
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>
     -- is guaranteed to execute atomically and in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-order primitive order>.
     -- If this is 'Vulkan.Core10.FundamentalTypes.TRUE',
     -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'
     -- is treated the same as
@@ -431,7 +431,7 @@
     -- @advancedBlendMaxColorAttachments@ is one greater than the highest color
     -- attachment index that /can/ be used in a subpass, for a pipeline that
     -- uses an
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operation>.
     advancedBlendMaxColorAttachments :: Word32
   , -- | #limits-advancedBlendIndependentBlend# @advancedBlendIndependentBlend@
     -- specifies whether advanced blend operations /can/ vary per-attachment.
@@ -534,19 +534,19 @@
 --
 -- -   #VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedSrcColor non-premultiplied source color>
 --     property is not supported, @srcPremultiplied@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   #VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendNonPremultipliedDstColor non-premultiplied destination color>
 --     property is not supported, @dstPremultiplied@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.TRUE'
 --
 -- -   #VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-advancedBlendCorrelatedOverlap correlated overlap>
 --     property is not supported, @blendOverlap@ /must/ be
 --     'BLEND_OVERLAP_UNCORRELATED_EXT'
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs-boot b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_blend_operation_advanced.hs-boot
@@ -276,7 +276,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs b/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs
--- a/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs
+++ b/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs
@@ -114,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_border_color_swizzle Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_border_color_swizzle Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -164,7 +164,7 @@
 --
 -- -   #VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-borderColorSwizzle-06437#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-borderColorSwizzle borderColorSwizzle>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-borderColorSwizzle borderColorSwizzle>
 --     feature /must/ be enabled.
 --
 -- == Valid Usage (Implicit)
@@ -269,7 +269,7 @@
     -- 'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_FLOAT_CUSTOM_EXT', or
     -- 'Vulkan.Core10.Enums.BorderColor.BORDER_COLOR_INT_CUSTOM_EXT'
     -- @borderColor@ and an image view that uses a
-    -- non-<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity component mapping>,
+    -- non-<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity component mapping>,
     -- when either @borderColorSwizzleFromImage@ is enabled or the
     -- 'SamplerBorderColorComponentMappingCreateInfoEXT' is specified.
     borderColorSwizzle :: Bool
@@ -281,7 +281,7 @@
     -- is not set, applications /can/ chain a
     -- 'SamplerBorderColorComponentMappingCreateInfoEXT' structure when
     -- creating samplers for use with image views that do not have an
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-views-identity-mappings identity swizzle>
     -- and, when those samplers are combined with image views using the same
     -- component mapping, sampled image operations that use opaque black or
     -- custom border colors will return the correct border color values.
diff --git a/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs-boot b/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_border_color_swizzle.hs-boot
@@ -114,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_border_color_swizzle Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_border_color_swizzle Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
--- a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
+++ b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs
@@ -130,7 +130,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
 --
 -- == Issues
 --
@@ -164,7 +164,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_buffer_device_address.hs-boot
@@ -130,7 +130,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddressesEXT>
 --
 -- == Issues
 --
@@ -164,7 +164,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_buffer_device_address Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
--- a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
+++ b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs
@@ -172,7 +172,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -481,7 +481,8 @@
 -- timestamp values reported for 'TIME_DOMAIN_DEVICE_EXT' can be matched to
 -- any timestamp captured through
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' or
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR' .
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
+-- .
 --
 -- > struct timespec tv;
 -- > clock_gettime(CLOCK_MONOTONIC, &tv);
@@ -507,9 +508,9 @@
 -- values in this time domain use the same units and are comparable with
 -- device timestamp values captured using
 -- 'Vulkan.Core10.CommandBufferBuilding.cmdWriteTimestamp' or
--- 'Vulkan.Extensions.VK_KHR_synchronization2.cmdWriteTimestamp2KHR' and
--- are defined to be incrementing according to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-timestampPeriod timestampPeriod>
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2'
+-- and are defined to be incrementing according to the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-timestampPeriod timestampPeriod>
 -- of the device.
 pattern TIME_DOMAIN_DEVICE_EXT                    = TimeDomainEXT 0
 -- | 'TIME_DOMAIN_CLOCK_MONOTONIC_EXT' specifies the CLOCK_MONOTONIC time
diff --git a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_calibrated_timestamps.hs-boot
@@ -172,7 +172,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_calibrated_timestamps Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs
--- a/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs
+++ b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -192,7 +192,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetColorWriteEnableEXT-None-04803# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-04804#
@@ -350,14 +350,14 @@
 -- 'Vulkan.Core10.FundamentalTypes.TRUE' values.
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
 -- feature is not enabled on the device, all
 -- 'Vulkan.Core10.FundamentalTypes.Bool32' elements in the
 -- @pColorWriteEnables@ array /must/ be
 -- 'Vulkan.Core10.FundamentalTypes.TRUE'.
 --
 -- Color Write Enable interacts with the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-color-write-mask Color Write Mask>
 -- as follows:
 --
 -- -   If @colorWriteEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE',
@@ -371,7 +371,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkPipelineColorWriteCreateInfoEXT-pAttachments-04801# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-colorWriteEnable colorWriteEnable>
 --     feature is not enabled, all elements of @pColorWriteEnables@ /must/
 --     be 'Vulkan.Core10.FundamentalTypes.TRUE'
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs-boot b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_color_write_enable.hs-boot
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_color_write_enable Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
--- a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
+++ b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs
@@ -156,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -244,7 +244,7 @@
 --
 -- -   #VUID-vkCmdBeginConditionalRenderingEXT-None-01980# Conditional
 --     rendering /must/ not already be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
 --
 -- == Valid Usage (Implicit)
 --
@@ -334,17 +334,17 @@
 --
 -- -   #VUID-vkCmdEndConditionalRenderingEXT-None-01985# Conditional
 --     rendering /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
 --
 -- -   #VUID-vkCmdEndConditionalRenderingEXT-None-01986# If conditional
 --     rendering was made
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
 --     outside of a render pass instance, it /must/ not be ended inside a
 --     render pass instance
 --
 -- -   #VUID-vkCmdEndConditionalRenderingEXT-None-01987# If conditional
 --     rendering was made
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#active-conditional-rendering active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#active-conditional-rendering active>
 --     within a subpass it /must/ be ended in the same subpass
 --
 -- == Valid Usage (Implicit)
@@ -518,7 +518,7 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedConditionalRendering inherited conditional rendering>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedConditionalRendering inherited conditional rendering>
 --     feature is not enabled, @conditionalRenderingEnable@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_conditional_rendering.hs-boot
@@ -156,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conditional_rendering Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
--- a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs
@@ -147,7 +147,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs-boot b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_conservative_rasterization.hs-boot
@@ -147,7 +147,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_conservative_rasterization Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
--- a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
+++ b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs
@@ -246,7 +246,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -300,11 +300,11 @@
 --     'Vulkan.Core10.Sampler.SamplerCreateInfo'::@borderColor@ type /must/
 --     match the sampled type of the provided @format@, as shown in the
 --     /SPIR-V Sampled Type/ column of the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-numericformat>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-numericformat>
 --     table
 --
 -- -   #VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
 --     feature is not enabled then @format@ /must/ not be
 --     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'
 --
@@ -339,7 +339,7 @@
   , -- | @format@ is a 'Vulkan.Core10.Enums.Format.Format' representing the
     -- format of the sampled image view(s). This field may be
     -- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-customBorderColorWithoutFormat customBorderColorWithoutFormat>
     -- feature is enabled.
     format :: Format
   }
diff --git a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_custom_border_color.hs-boot
@@ -246,7 +246,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_custom_border_color Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_marker.hs b/src/Vulkan/Extensions/VK_EXT_debug_marker.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_marker.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_marker.hs
@@ -268,7 +268,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -721,7 +721,7 @@
     --
     -- #VUID-VkDebugMarkerObjectNameInfoEXT-object-01492# @object@ /must/ be a
     -- Vulkan object of the type associated with @objectType@ as defined in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debug-report-object-types>
     object :: Word64
   , -- | @pObjectName@ is a null-terminated UTF-8 string specifying the name to
     -- apply to @object@.
@@ -809,7 +809,7 @@
     --
     -- #VUID-VkDebugMarkerObjectTagInfoEXT-object-01495# @object@ /must/ be a
     -- Vulkan object of the type associated with @objectType@ as defined in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debug-report-object-types>
     object :: Word64
   , -- | @tagName@ is a numerical identifier of the tag.
     tagName :: Word64
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_marker.hs-boot b/src/Vulkan/Extensions/VK_EXT_debug_marker.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_debug_marker.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_debug_marker.hs-boot
@@ -268,7 +268,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_marker Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_report.hs b/src/Vulkan/Extensions/VK_EXT_debug_report.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_report.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_report.hs
@@ -322,7 +322,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -517,7 +517,7 @@
                                 -- called.
                                 DebugReportCallbackCreateInfoEXT
                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                 -- chapter.
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (DebugReportCallbackEXT)
@@ -610,7 +610,7 @@
                                  -- active.
                                  DebugReportCallbackEXT
                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io ()
@@ -652,7 +652,7 @@
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', @object@ /must/ be a
 --     Vulkan object of the corresponding type associated with @objectType@
 --     as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debug-report-object-types>
 --
 -- == Valid Usage (Implicit)
 --
@@ -1179,7 +1179,7 @@
 -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', @object@ /must/ be a Vulkan
 -- object of the corresponding type associated with @objectType@ as defined
 -- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debug-report-object-types>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debug-report-object-types>.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot b/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_debug_report.hs-boot
@@ -322,7 +322,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_report Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
--- a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
+++ b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs
@@ -479,7 +479,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -1199,7 +1199,7 @@
                                 -- conditions under which this messenger will trigger the callback.
                                 DebugUtilsMessengerCreateInfoEXT
                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                 -- chapter.
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (DebugUtilsMessengerEXT)
@@ -1296,7 +1296,7 @@
                                  -- active.
                                  DebugUtilsMessengerEXT
                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io ()
@@ -1405,7 +1405,7 @@
 --     'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_UNKNOWN', @objectHandle@
 --     /must/ be 'Vulkan.Core10.APIConstants.NULL_HANDLE' or a valid Vulkan
 --     handle of the type associated with @objectType@ as defined in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
 --     table
 --
 -- == Valid Usage (Implicit)
@@ -1516,7 +1516,7 @@
     -- #VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910# @objectHandle@
     -- /must/ be a valid Vulkan handle of the type associated with @objectType@
     -- as defined in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
     -- table
     objectHandle :: Word64
   , -- | @tagName@ is a numerical identifier of the tag.
@@ -1902,14 +1902,14 @@
   , -- | @pQueueLabels@ is @NULL@ or a pointer to an array of
     -- 'DebugUtilsLabelEXT' active in the current 'Vulkan.Core10.Handles.Queue'
     -- at the time the callback was triggered. Refer to
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels Queue Labels>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-queue-labels Queue Labels>
     -- for more information.
     queueLabels :: Vector DebugUtilsLabelEXT
   , -- | @pCmdBufLabels@ is @NULL@ or a pointer to an array of
     -- 'DebugUtilsLabelEXT' active in the current
     -- 'Vulkan.Core10.Handles.CommandBuffer' at the time the callback was
     -- triggered. Refer to
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labels Command Buffer Labels>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-command-buffer-labels Command Buffer Labels>
     -- for more information.
     cmdBufLabels :: Vector DebugUtilsLabelEXT
   , -- | @pObjects@ is a pointer to an array of 'DebugUtilsObjectNameInfoEXT'
diff --git a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_debug_utils.hs-boot
@@ -479,7 +479,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_debug_utils Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs b/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs
@@ -125,7 +125,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_control Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -238,7 +238,7 @@
 --
 -- -   #VUID-VkPipelineViewportDepthClipControlCreateInfoEXT-negativeOneToOne-06470#
 --     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-depthClipControl depthClipControl>
 --     is not enabled, @negativeOneToOne@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clip_control.hs-boot
@@ -125,7 +125,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_control Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -240,7 +240,7 @@
     flags :: PipelineRasterizationDepthClipStateCreateFlagsEXT
   , -- | @depthClipEnable@ controls whether depth clipping is enabled as
     -- described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>.
     depthClipEnable :: Bool
   }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs-boot b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_depth_clip_enable.hs-boot
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_clip_enable Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_depth_range_unrestricted.hs b/src/Vulkan/Extensions/VK_EXT_depth_range_unrestricted.hs
--- a/src/Vulkan/Extensions/VK_EXT_depth_range_unrestricted.hs
+++ b/src/Vulkan/Extensions/VK_EXT_depth_range_unrestricted.hs
@@ -57,10 +57,10 @@
 --
 -- 1) How do 'Vulkan.Core10.Pipeline.Viewport' @minDepth@ and @maxDepth@
 -- values outside of the @0.0@ to @1.0@ range interact with
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>?
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>?
 --
 -- __RESOLVED__: The behavior described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-clipping Primitive Clipping>
 -- still applies. If depth clamping is disabled the depth values are still
 -- clipped to 0 ≤ zc ≤ wc before the viewport transform. If depth clamping
 -- is enabled the above equation is ignored and the depth values are
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_depth_range_unrestricted Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_depth_range_unrestricted Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs b/src/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs
--- a/src/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs
+++ b/src/Vulkan/Extensions/VK_EXT_descriptor_indexing.hs
@@ -213,7 +213,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_descriptor_indexing Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_descriptor_indexing Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs
--- a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs
+++ b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs
@@ -234,7 +234,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -532,7 +532,7 @@
     -- 'DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT', @objectHandle@ is a
     -- valid Vulkan handle of the type associated with @objectType@ as defined
     -- in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#debugging-object-types  and Vulkan Handle Relationship>
     -- table. Otherwise, @objectHandle@ is undefined.
     objectHandle :: Word64
   , -- | @heapIndex@ describes which memory heap this device memory allocation is
diff --git a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_device_memory_report.hs-boot
@@ -234,7 +234,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_device_memory_report Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_direct_mode_display.hs b/src/Vulkan/Extensions/VK_EXT_direct_mode_display.hs
--- a/src/Vulkan/Extensions/VK_EXT_direct_mode_display.hs
+++ b/src/Vulkan/Extensions/VK_EXT_direct_mode_display.hs
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_direct_mode_display Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_direct_mode_display Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs b/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs
--- a/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs
+++ b/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -227,7 +227,7 @@
                             DirectFBSurfaceCreateInfoEXT
                          -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                             -- surface object when there is no more specific allocator available (see
-                            -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                            -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                             ("allocator" ::: Maybe AllocationCallbacks)
                          -> io (SurfaceKHR)
 createDirectFBSurfaceEXT instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs-boot b/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_directfb_surface.hs-boot
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_directfb_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
--- a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
+++ b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs-boot b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_discard_rectangles.hs-boot
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_discard_rectangles Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_display_control.hs b/src/Vulkan/Extensions/VK_EXT_display_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_display_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_display_control.hs
@@ -146,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -361,7 +361,7 @@
                           -- describing the event of interest to the application.
                           DeviceEventInfoEXT
                        -> -- | @pAllocator@ controls host memory allocation as described in the
-                          -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                           -- chapter.
                           ("allocator" ::: Maybe AllocationCallbacks)
                        -> io (Fence)
@@ -440,7 +440,7 @@
                            -- describing the event of interest to the application.
                            DisplayEventInfoEXT
                         -> -- | @pAllocator@ controls host memory allocation as described in the
-                           -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                            -- chapter.
                            ("allocator" ::: Maybe AllocationCallbacks)
                         -> io (Fence)
diff --git a/src/Vulkan/Extensions/VK_EXT_display_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_display_control.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_display_control.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_display_control.hs-boot
@@ -146,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_control Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
--- a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
+++ b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -363,7 +363,7 @@
     -- #VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246#
     -- @supportedSurfaceCounters@ /must/ not include
     -- 'SURFACE_COUNTER_VBLANK_BIT_EXT' unless the surface queried is a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#wsi-display-surfaces display surface>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#wsi-display-surfaces display surface>
     supportedSurfaceCounters :: SurfaceCounterFlagsEXT
   }
   deriving (Typeable)
diff --git a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_display_surface_counter.hs-boot
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_display_surface_counter Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs
--- a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs
@@ -23,1495 +23,383 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
--- [__Contact__]
---
---     -   Piers Daniell
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_extended_dynamic_state] @pdaniell-nv%0A<<Here describe the issue or question you have about the VK_EXT_extended_dynamic_state extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2019-12-09
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Dan Ginsburg, Valve Corporation
---
---     -   Graeme Leese, Broadcom
---
---     -   Hans-Kristian Arntzen, Valve Corporation
---
---     -   Jan-Harald Fredriksen, Arm Limited
---
---     -   Jason Ekstrand, Intel
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Jesse Hall, Google
---
---     -   Philip Rebohle, Valve Corporation
---
---     -   Stuart Smith, Imagination Technologies
---
---     -   Tobias Hector, AMD
---
--- == Description
---
--- This extension adds some more dynamic state to support applications that
--- need to reduce the number of pipeline state objects they compile and
--- bind.
---
--- == New Commands
---
--- -   'cmdBindVertexBuffers2EXT'
---
--- -   'cmdSetCullModeEXT'
---
--- -   'cmdSetDepthBoundsTestEnableEXT'
---
--- -   'cmdSetDepthCompareOpEXT'
---
--- -   'cmdSetDepthTestEnableEXT'
---
--- -   'cmdSetDepthWriteEnableEXT'
---
--- -   'cmdSetFrontFaceEXT'
---
--- -   'cmdSetPrimitiveTopologyEXT'
---
--- -   'cmdSetScissorWithCountEXT'
---
--- -   'cmdSetStencilOpEXT'
---
--- -   'cmdSetStencilTestEnableEXT'
---
--- -   'cmdSetViewportWithCountEXT'
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceExtendedDynamicStateFeaturesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME'
---
--- -   'EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
---
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT'
---
--- == Version History
---
--- -   Revision 1, 2019-12-09 (Piers Daniell)
---
---     -   Internal revisions
---
--- == See Also
---
--- 'PhysicalDeviceExtendedDynamicStateFeaturesEXT',
--- 'cmdBindVertexBuffers2EXT', 'cmdSetCullModeEXT',
--- 'cmdSetDepthBoundsTestEnableEXT', 'cmdSetDepthCompareOpEXT',
--- 'cmdSetDepthTestEnableEXT', 'cmdSetDepthWriteEnableEXT',
--- 'cmdSetFrontFaceEXT', 'cmdSetPrimitiveTopologyEXT',
--- 'cmdSetScissorWithCountEXT', 'cmdSetStencilOpEXT',
--- 'cmdSetStencilTestEnableEXT', 'cmdSetViewportWithCountEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_EXT_extended_dynamic_state  ( cmdSetCullModeEXT
-                                                        , cmdSetFrontFaceEXT
-                                                        , cmdSetPrimitiveTopologyEXT
-                                                        , cmdSetViewportWithCountEXT
-                                                        , cmdSetScissorWithCountEXT
-                                                        , cmdBindVertexBuffers2EXT
-                                                        , cmdSetDepthTestEnableEXT
-                                                        , cmdSetDepthWriteEnableEXT
-                                                        , cmdSetDepthCompareOpEXT
-                                                        , cmdSetDepthBoundsTestEnableEXT
-                                                        , cmdSetStencilTestEnableEXT
-                                                        , cmdSetStencilOpEXT
-                                                        , PhysicalDeviceExtendedDynamicStateFeaturesEXT(..)
-                                                        , EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION
-                                                        , pattern EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION
-                                                        , EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME
-                                                        , pattern EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME
-                                                        ) where
-
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import qualified Data.Vector (null)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.FundamentalTypes (Bool32(..))
-import Vulkan.Core10.Handles (Buffer)
-import Vulkan.Core10.Handles (Buffer(..))
-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.Enums.CompareOp (CompareOp)
-import Vulkan.Core10.Enums.CompareOp (CompareOp(..))
-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlagBits(..))
-import Vulkan.Core10.Enums.CullModeFlagBits (CullModeFlags)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBindVertexBuffers2EXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetCullModeEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBoundsTestEnableEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthCompareOpEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthTestEnableEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthWriteEnableEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetFrontFaceEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPrimitiveTopologyEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetScissorWithCountEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilOpEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetStencilTestEnableEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetViewportWithCountEXT))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Enums.FrontFace (FrontFace)
-import Vulkan.Core10.Enums.FrontFace (FrontFace(..))
-import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology)
-import Vulkan.Core10.Enums.PrimitiveTopology (PrimitiveTopology(..))
-import Vulkan.Core10.FundamentalTypes (Rect2D)
-import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlagBits(..))
-import Vulkan.Core10.Enums.StencilFaceFlagBits (StencilFaceFlags)
-import Vulkan.Core10.Enums.StencilOp (StencilOp)
-import Vulkan.Core10.Enums.StencilOp (StencilOp(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Pipeline (Viewport)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetCullModeEXT
-  :: FunPtr (Ptr CommandBuffer_T -> CullModeFlags -> IO ()) -> Ptr CommandBuffer_T -> CullModeFlags -> IO ()
-
--- | vkCmdSetCullModeEXT - Set cull mode dynamically for a command buffer
---
--- = Description
---
--- This command sets the cull mode for subsequent drawing commands when the
--- graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE_EXT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@cullMode@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetCullModeEXT-None-03384# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetCullModeEXT-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetCullModeEXT-cullMode-parameter# @cullMode@ /must/ be a
---     valid combination of
---     'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlagBits' values
---
--- -   #VUID-vkCmdSetCullModeEXT-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-vkCmdSetCullModeEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.CullModeFlagBits.CullModeFlags'
-cmdSetCullModeEXT :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which the command will be
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @cullMode@ specifies the cull mode property to use for drawing.
-                     CullModeFlags
-                  -> io ()
-cmdSetCullModeEXT commandBuffer cullMode = liftIO $ do
-  let vkCmdSetCullModeEXTPtr = pVkCmdSetCullModeEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetCullModeEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetCullModeEXT is null" Nothing Nothing
-  let vkCmdSetCullModeEXT' = mkVkCmdSetCullModeEXT vkCmdSetCullModeEXTPtr
-  traceAroundEvent "vkCmdSetCullModeEXT" (vkCmdSetCullModeEXT' (commandBufferHandle (commandBuffer)) (cullMode))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetFrontFaceEXT
-  :: FunPtr (Ptr CommandBuffer_T -> FrontFace -> IO ()) -> Ptr CommandBuffer_T -> FrontFace -> IO ()
-
--- | vkCmdSetFrontFaceEXT - Set front face orientation dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the front face orientation for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE_EXT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@frontFace@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetFrontFaceEXT-None-03383# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetFrontFaceEXT-frontFace-parameter# @frontFace@ /must/
---     be a valid 'Vulkan.Core10.Enums.FrontFace.FrontFace' value
---
--- -   #VUID-vkCmdSetFrontFaceEXT-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-vkCmdSetFrontFaceEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.FrontFace.FrontFace'
-cmdSetFrontFaceEXT :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer into which the command will be
-                      -- recorded.
-                      CommandBuffer
-                   -> -- | @frontFace@ is a 'Vulkan.Core10.Enums.FrontFace.FrontFace' value
-                      -- specifying the front-facing triangle orientation to be used for culling.
-                      FrontFace
-                   -> io ()
-cmdSetFrontFaceEXT commandBuffer frontFace = liftIO $ do
-  let vkCmdSetFrontFaceEXTPtr = pVkCmdSetFrontFaceEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetFrontFaceEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetFrontFaceEXT is null" Nothing Nothing
-  let vkCmdSetFrontFaceEXT' = mkVkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXTPtr
-  traceAroundEvent "vkCmdSetFrontFaceEXT" (vkCmdSetFrontFaceEXT' (commandBufferHandle (commandBuffer)) (frontFace))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetPrimitiveTopologyEXT
-  :: FunPtr (Ptr CommandBuffer_T -> PrimitiveTopology -> IO ()) -> Ptr CommandBuffer_T -> PrimitiveTopology -> IO ()
-
--- | vkCmdSetPrimitiveTopologyEXT - Set primitive topology state dynamically
--- for a command buffer
---
--- = Description
---
--- This command sets the primitive topology for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@topology@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetPrimitiveTopologyEXT-None-03347# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetPrimitiveTopologyEXT-primitiveTopology-parameter#
---     @primitiveTopology@ /must/ be a valid
---     'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology' value
---
--- -   #VUID-vkCmdSetPrimitiveTopologyEXT-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-vkCmdSetPrimitiveTopologyEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.PrimitiveTopology.PrimitiveTopology'
-cmdSetPrimitiveTopologyEXT :: forall io
-                            . (MonadIO io)
-                           => -- | @commandBuffer@ is the command buffer into which the command will be
-                              -- recorded.
-                              CommandBuffer
-                           -> -- | @primitiveTopology@ specifies the primitive topology to use for drawing.
-                              PrimitiveTopology
-                           -> io ()
-cmdSetPrimitiveTopologyEXT commandBuffer primitiveTopology = liftIO $ do
-  let vkCmdSetPrimitiveTopologyEXTPtr = pVkCmdSetPrimitiveTopologyEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetPrimitiveTopologyEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetPrimitiveTopologyEXT is null" Nothing Nothing
-  let vkCmdSetPrimitiveTopologyEXT' = mkVkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXTPtr
-  traceAroundEvent "vkCmdSetPrimitiveTopologyEXT" (vkCmdSetPrimitiveTopologyEXT' (commandBufferHandle (commandBuffer)) (primitiveTopology))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetViewportWithCountEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Viewport -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Viewport -> IO ()
-
--- | vkCmdSetViewportWithCountEXT - Set the viewport count and viewports
--- dynamically for a command buffer
---
--- = Description
---
--- This command sets the viewport count and viewports state for subsequent
--- drawing commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the corresponding
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
--- and @pViewports@ values used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-None-03393# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-viewportCount-03394#
---     @viewportCount@ /must/ be between @1@ and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
---     inclusive
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-viewportCount-03395# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
---     feature is not enabled, @viewportCount@ /must/ be @1@
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-commandBuffer-04819#
---     @commandBuffer@ /must/ not have
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
---     enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-pViewports-parameter#
---     @pViewports@ /must/ be a valid pointer to an array of
---     @viewportCount@ valid 'Vulkan.Core10.Pipeline.Viewport' structures
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-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-vkCmdSetViewportWithCountEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdSetViewportWithCountEXT-viewportCount-arraylength#
---     @viewportCount@ /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Pipeline.Viewport'
-cmdSetViewportWithCountEXT :: forall io
-                            . (MonadIO io)
-                           => -- | @commandBuffer@ is the command buffer into which the command will be
-                              -- recorded.
-                              CommandBuffer
-                           -> -- | @pViewports@ specifies the viewports to use for drawing.
-                              ("viewports" ::: Vector Viewport)
-                           -> io ()
-cmdSetViewportWithCountEXT commandBuffer viewports = liftIO . evalContT $ do
-  let vkCmdSetViewportWithCountEXTPtr = pVkCmdSetViewportWithCountEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetViewportWithCountEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetViewportWithCountEXT is null" Nothing Nothing
-  let vkCmdSetViewportWithCountEXT' = mkVkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXTPtr
-  pPViewports <- ContT $ allocaBytes @Viewport ((Data.Vector.length (viewports)) * 24)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPViewports `plusPtr` (24 * (i)) :: Ptr Viewport) (e)) (viewports)
-  lift $ traceAroundEvent "vkCmdSetViewportWithCountEXT" (vkCmdSetViewportWithCountEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (viewports)) :: Word32)) (pPViewports))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetScissorWithCountEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Rect2D -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Rect2D -> IO ()
-
--- | vkCmdSetScissorWithCountEXT - Set the scissor count and scissor
--- rectangular bounds dynamically for a command buffer
---
--- = Description
---
--- This command sets the scissor count and scissor rectangular bounds state
--- for subsequence drawing commands when the graphics pipeline is created
--- with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the corresponding
--- 'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
--- and @pScissors@ values used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-None-03396# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-scissorCount-03397# @scissorCount@
---     /must/ be between @1@ and
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxViewports@,
---     inclusive
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-scissorCount-03398# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
---     feature is not enabled, @scissorCount@ /must/ be @1@
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-x-03399# The @x@ and @y@ members
---     of @offset@ member of any element of @pScissors@ /must/ be greater
---     than or equal to @0@
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-offset-03400# Evaluation of
---     (@offset.x@ + @extent.width@) /must/ not cause a signed integer
---     addition overflow for any element of @pScissors@
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-offset-03401# Evaluation of
---     (@offset.y@ + @extent.height@) /must/ not cause a signed integer
---     addition overflow for any element of @pScissors@
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-commandBuffer-04820#
---     @commandBuffer@ /must/ not have
---     'Vulkan.Extensions.VK_NV_inherited_viewport_scissor.CommandBufferInheritanceViewportScissorInfoNV'::@viewportScissor2D@
---     enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-pScissors-parameter# @pScissors@
---     /must/ be a valid pointer to an array of @scissorCount@
---     'Vulkan.Core10.FundamentalTypes.Rect2D' structures
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-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-vkCmdSetScissorWithCountEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdSetScissorWithCountEXT-scissorCount-arraylength#
---     @scissorCount@ /must/ be greater than @0@
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.Rect2D'
-cmdSetScissorWithCountEXT :: forall io
-                           . (MonadIO io)
-                          => -- | @commandBuffer@ is the command buffer into which the command will be
-                             -- recorded.
-                             CommandBuffer
-                          -> -- | @pScissors@ specifies the scissors to use for drawing.
-                             ("scissors" ::: Vector Rect2D)
-                          -> io ()
-cmdSetScissorWithCountEXT commandBuffer scissors = liftIO . evalContT $ do
-  let vkCmdSetScissorWithCountEXTPtr = pVkCmdSetScissorWithCountEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetScissorWithCountEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetScissorWithCountEXT is null" Nothing Nothing
-  let vkCmdSetScissorWithCountEXT' = mkVkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXTPtr
-  pPScissors <- ContT $ allocaBytes @Rect2D ((Data.Vector.length (scissors)) * 16)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPScissors `plusPtr` (16 * (i)) :: Ptr Rect2D) (e)) (scissors)
-  lift $ traceAroundEvent "vkCmdSetScissorWithCountEXT" (vkCmdSetScissorWithCountEXT' (commandBufferHandle (commandBuffer)) ((fromIntegral (Data.Vector.length $ (scissors)) :: Word32)) (pPScissors))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBindVertexBuffers2EXT
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Word32 -> Ptr Buffer -> Ptr DeviceSize -> Ptr DeviceSize -> Ptr DeviceSize -> IO ()
-
--- | vkCmdBindVertexBuffers2EXT - Bind vertex buffers to a command buffer and
--- dynamically set strides
---
--- = Description
---
--- The values taken from elements i of @pBuffers@ and @pOffsets@ replace
--- the current state for the vertex input binding @firstBinding@ + i, for i
--- in [0, @bindingCount@). The vertex input binding is updated to start at
--- the offset indicated by @pOffsets@[i] from the start of the buffer
--- @pBuffers@[i]. If @pSizes@ is not @NULL@ then @pSizes@[i] specifies the
--- bound size of the vertex buffer starting from the corresponding elements
--- of @pBuffers@[i] plus @pOffsets@[i]. All vertex input attributes that
--- use each of these bindings will use these updated addresses in their
--- address calculations for subsequent drawing commands. If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
--- feature is enabled, elements of @pBuffers@ /can/ be
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', and /can/ be used by the
--- vertex shader. If a vertex input attribute is bound to a vertex input
--- binding that is 'Vulkan.Core10.APIConstants.NULL_HANDLE', the values
--- taken from memory are considered to be zero, and missing G, B, or A
--- components are
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction filled with (0,0,1)>.
---
--- This command also \<pipelines-dynamic-state, dynamically sets>> the byte
--- strides between consecutive elements within buffer @pBuffers@[i] to the
--- corresponding @pStrides@[i] value when the graphics pipeline is created
--- with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, strides are specified by the
--- 'Vulkan.Core10.Pipeline.VertexInputBindingDescription'::@stride@ values
--- used to create the currently active pipeline.
---
--- If the bound pipeline state object was also created with the
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
--- dynamic state enabled then
--- 'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
--- /can/ be used instead of 'cmdBindVertexBuffers2EXT' to set the stride.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03355# @firstBinding@
---     /must/ be less than
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03356# The sum of
---     @firstBinding@ and @bindingCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindings@
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pOffsets-03357# All elements of
---     @pOffsets@ /must/ be less than the size of the corresponding element
---     in @pBuffers@
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pSizes-03358# If @pSizes@ is not
---     @NULL@, all elements of @pOffsets@ plus @pSizes@ /must/ be less than
---     or equal to the size of the corresponding element in @pBuffers@
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03359# All elements of
---     @pBuffers@ /must/ have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_VERTEX_BUFFER_BIT'
---     flag
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03360# Each element of
---     @pBuffers@ that is non-sparse /must/ be bound completely and
---     contiguously to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04111# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
---     feature is not enabled, all elements of @pBuffers@ /must/ not be
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112# If an element of
---     @pBuffers@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', then the
---     corresponding element of @pOffsets@ /must/ be zero
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pStrides-03362# If @pStrides@ is
---     not @NULL@ each element of @pStrides@ /must/ be less than or equal
---     to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pStrides-06209# If @pStrides@ is
---     not @NULL@ each element of @pStrides@ /must/ be either 0 or greater
---     than or equal to the maximum extent of all vertex input attributes
---     fetched from the corresponding binding, where the extent is
---     calculated as the
---     'Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@offset@
---     plus
---     'Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@
---     size
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pBuffers-parameter# @pBuffers@
---     /must/ be a valid pointer to an array of @bindingCount@ valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     'Vulkan.Core10.Handles.Buffer' handles
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pOffsets-parameter# @pOffsets@
---     /must/ be a valid pointer to an array of @bindingCount@
---     'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pSizes-parameter# If @pSizes@ is
---     not @NULL@, @pSizes@ /must/ be a valid pointer to an array of
---     @bindingCount@ 'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-pStrides-parameter# If @pStrides@
---     is not @NULL@, @pStrides@ /must/ be a valid pointer to an array of
---     @bindingCount@ 'Vulkan.Core10.FundamentalTypes.DeviceSize' values
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-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-vkCmdBindVertexBuffers2EXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-bindingCount-arraylength# If any of
---     @pSizes@, or @pStrides@ are not @NULL@, @bindingCount@ /must/ be
---     greater than @0@
---
--- -   #VUID-vkCmdBindVertexBuffers2EXT-commonparent# Both of
---     @commandBuffer@, and the elements of @pBuffers@ that are valid
---     handles of non-ignored parameters /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize'
-cmdBindVertexBuffers2EXT :: forall io
-                          . (MonadIO io)
-                         => -- | @commandBuffer@ is the command buffer into which the command is
-                            -- recorded.
-                            CommandBuffer
-                         -> -- | @firstBinding@ is the index of the first vertex input binding whose
-                            -- state is updated by the command.
-                            ("firstBinding" ::: Word32)
-                         -> -- | @pBuffers@ is a pointer to an array of buffer handles.
-                            ("buffers" ::: Vector Buffer)
-                         -> -- | @pOffsets@ is a pointer to an array of buffer offsets.
-                            ("offsets" ::: Vector DeviceSize)
-                         -> -- | @pSizes@ is @NULL@ or a pointer to an array of the size in bytes of
-                            -- vertex data bound from @pBuffers@.
-                            ("sizes" ::: Vector DeviceSize)
-                         -> -- | @pStrides@ is @NULL@ or a pointer to an array of buffer strides.
-                            ("strides" ::: Vector DeviceSize)
-                         -> io ()
-cmdBindVertexBuffers2EXT commandBuffer firstBinding buffers offsets sizes strides = liftIO . evalContT $ do
-  let vkCmdBindVertexBuffers2EXTPtr = pVkCmdBindVertexBuffers2EXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBindVertexBuffers2EXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBindVertexBuffers2EXT is null" Nothing Nothing
-  let vkCmdBindVertexBuffers2EXT' = mkVkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXTPtr
-  let pBuffersLength = Data.Vector.length $ (buffers)
-  lift $ unless ((Data.Vector.length $ (offsets)) == pBuffersLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "pOffsets and pBuffers must have the same length" Nothing Nothing
-  let pSizesLength = Data.Vector.length $ (sizes)
-  lift $ unless (fromIntegral pSizesLength == pBuffersLength || pSizesLength == 0) $
-    throwIO $ IOError Nothing InvalidArgument "" "pSizes and pBuffers must have the same length" Nothing Nothing
-  let pStridesLength = Data.Vector.length $ (strides)
-  lift $ unless (fromIntegral pStridesLength == pBuffersLength || pStridesLength == 0) $
-    throwIO $ IOError Nothing InvalidArgument "" "pStrides and pBuffers must have the same length" Nothing Nothing
-  pPBuffers <- ContT $ allocaBytes @Buffer ((Data.Vector.length (buffers)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPBuffers `plusPtr` (8 * (i)) :: Ptr Buffer) (e)) (buffers)
-  pPOffsets <- ContT $ allocaBytes @DeviceSize ((Data.Vector.length (offsets)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPOffsets `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) (offsets)
-  pSizes <- if Data.Vector.null (sizes)
-    then pure nullPtr
-    else do
-      pPSizes <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (sizes))) * 8)
-      lift $ Data.Vector.imapM_ (\i e -> poke (pPSizes `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((sizes))
-      pure $ pPSizes
-  pStrides <- if Data.Vector.null (strides)
-    then pure nullPtr
-    else do
-      pPStrides <- ContT $ allocaBytes @DeviceSize (((Data.Vector.length (strides))) * 8)
-      lift $ Data.Vector.imapM_ (\i e -> poke (pPStrides `plusPtr` (8 * (i)) :: Ptr DeviceSize) (e)) ((strides))
-      pure $ pPStrides
-  lift $ traceAroundEvent "vkCmdBindVertexBuffers2EXT" (vkCmdBindVertexBuffers2EXT' (commandBufferHandle (commandBuffer)) (firstBinding) ((fromIntegral pBuffersLength :: Word32)) (pPBuffers) (pPOffsets) pSizes pStrides)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDepthTestEnableEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
-
--- | vkCmdSetDepthTestEnableEXT - Set depth test enable dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the depth test enable for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthTestEnable@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDepthTestEnableEXT-None-03352# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDepthTestEnableEXT-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-vkCmdSetDepthTestEnableEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetDepthTestEnableEXT :: forall io
-                          . (MonadIO io)
-                         => -- | @commandBuffer@ is the command buffer into which the command will be
-                            -- recorded.
-                            CommandBuffer
-                         -> -- | @depthTestEnable@ specifies if the depth test is enabled.
-                            ("depthTestEnable" ::: Bool)
-                         -> io ()
-cmdSetDepthTestEnableEXT commandBuffer depthTestEnable = liftIO $ do
-  let vkCmdSetDepthTestEnableEXTPtr = pVkCmdSetDepthTestEnableEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetDepthTestEnableEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthTestEnableEXT is null" Nothing Nothing
-  let vkCmdSetDepthTestEnableEXT' = mkVkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXTPtr
-  traceAroundEvent "vkCmdSetDepthTestEnableEXT" (vkCmdSetDepthTestEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthTestEnable)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDepthWriteEnableEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
-
--- | vkCmdSetDepthWriteEnableEXT - Set depth write enable dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the depth write enable for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthWriteEnable@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDepthWriteEnableEXT-None-03354# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDepthWriteEnableEXT-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-vkCmdSetDepthWriteEnableEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetDepthWriteEnableEXT :: forall io
-                           . (MonadIO io)
-                          => -- | @commandBuffer@ is the command buffer into which the command will be
-                             -- recorded.
-                             CommandBuffer
-                          -> -- | @depthWriteEnable@ specifies if depth writes are enabled.
-                             ("depthWriteEnable" ::: Bool)
-                          -> io ()
-cmdSetDepthWriteEnableEXT commandBuffer depthWriteEnable = liftIO $ do
-  let vkCmdSetDepthWriteEnableEXTPtr = pVkCmdSetDepthWriteEnableEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetDepthWriteEnableEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthWriteEnableEXT is null" Nothing Nothing
-  let vkCmdSetDepthWriteEnableEXT' = mkVkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXTPtr
-  traceAroundEvent "vkCmdSetDepthWriteEnableEXT" (vkCmdSetDepthWriteEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthWriteEnable)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDepthCompareOpEXT
-  :: FunPtr (Ptr CommandBuffer_T -> CompareOp -> IO ()) -> Ptr CommandBuffer_T -> CompareOp -> IO ()
-
--- | vkCmdSetDepthCompareOpEXT - Set depth comparison operator dynamically
--- for a command buffer
---
--- = Description
---
--- This command sets the depth comparison operator for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthCompareOp@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDepthCompareOpEXT-None-03353# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDepthCompareOpEXT-depthCompareOp-parameter#
---     @depthCompareOp@ /must/ be a valid
---     'Vulkan.Core10.Enums.CompareOp.CompareOp' value
---
--- -   #VUID-vkCmdSetDepthCompareOpEXT-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-vkCmdSetDepthCompareOpEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.CompareOp.CompareOp'
-cmdSetDepthCompareOpEXT :: forall io
-                         . (MonadIO io)
-                        => -- | @commandBuffer@ is the command buffer into which the command will be
-                           -- recorded.
-                           CommandBuffer
-                        -> -- | @depthCompareOp@ specifies the depth comparison operator.
-                           ("depthCompareOp" ::: CompareOp)
-                        -> io ()
-cmdSetDepthCompareOpEXT commandBuffer depthCompareOp = liftIO $ do
-  let vkCmdSetDepthCompareOpEXTPtr = pVkCmdSetDepthCompareOpEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetDepthCompareOpEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthCompareOpEXT is null" Nothing Nothing
-  let vkCmdSetDepthCompareOpEXT' = mkVkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXTPtr
-  traceAroundEvent "vkCmdSetDepthCompareOpEXT" (vkCmdSetDepthCompareOpEXT' (commandBufferHandle (commandBuffer)) (depthCompareOp))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDepthBoundsTestEnableEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
-
--- | vkCmdSetDepthBoundsTestEnableEXT - Set depth bounds test enable
--- dynamically for a command buffer
---
--- = Description
---
--- This command sets the depth bounds enable for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@depthBoundsTestEnable@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDepthBoundsTestEnableEXT-None-03349# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDepthBoundsTestEnableEXT-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-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetDepthBoundsTestEnableEXT :: forall io
-                                . (MonadIO io)
-                               => -- | @commandBuffer@ is the command buffer into which the command will be
-                                  -- recorded.
-                                  CommandBuffer
-                               -> -- | @depthBoundsTestEnable@ specifies if the depth bounds test is enabled.
-                                  ("depthBoundsTestEnable" ::: Bool)
-                               -> io ()
-cmdSetDepthBoundsTestEnableEXT commandBuffer depthBoundsTestEnable = liftIO $ do
-  let vkCmdSetDepthBoundsTestEnableEXTPtr = pVkCmdSetDepthBoundsTestEnableEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetDepthBoundsTestEnableEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBoundsTestEnableEXT is null" Nothing Nothing
-  let vkCmdSetDepthBoundsTestEnableEXT' = mkVkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXTPtr
-  traceAroundEvent "vkCmdSetDepthBoundsTestEnableEXT" (vkCmdSetDepthBoundsTestEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthBoundsTestEnable)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetStencilTestEnableEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
-
--- | vkCmdSetStencilTestEnableEXT - Set stencil test enable dynamically for a
--- command buffer
---
--- = Description
---
--- This command sets the stencil test enable for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@stencilTestEnable@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetStencilTestEnableEXT-None-03350# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetStencilTestEnableEXT-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-vkCmdSetStencilTestEnableEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetStencilTestEnableEXT :: forall io
-                            . (MonadIO io)
-                           => -- | @commandBuffer@ is the command buffer into which the command will be
-                              -- recorded.
-                              CommandBuffer
-                           -> -- | @stencilTestEnable@ specifies if the stencil test is enabled.
-                              ("stencilTestEnable" ::: Bool)
-                           -> io ()
-cmdSetStencilTestEnableEXT commandBuffer stencilTestEnable = liftIO $ do
-  let vkCmdSetStencilTestEnableEXTPtr = pVkCmdSetStencilTestEnableEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetStencilTestEnableEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilTestEnableEXT is null" Nothing Nothing
-  let vkCmdSetStencilTestEnableEXT' = mkVkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXTPtr
-  traceAroundEvent "vkCmdSetStencilTestEnableEXT" (vkCmdSetStencilTestEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (stencilTestEnable)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetStencilOpEXT
-  :: FunPtr (Ptr CommandBuffer_T -> StencilFaceFlags -> StencilOp -> StencilOp -> StencilOp -> CompareOp -> IO ()) -> Ptr CommandBuffer_T -> StencilFaceFlags -> StencilOp -> StencilOp -> StencilOp -> CompareOp -> IO ()
-
--- | vkCmdSetStencilOpEXT - Set stencil operation dynamically for a command
--- buffer
---
--- = Description
---
--- This command sets the stencil operation for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT' set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the corresponding
--- 'Vulkan.Core10.Pipeline.PipelineDepthStencilStateCreateInfo'::@failOp@,
--- @passOp@, @depthFailOp@, and @compareOp@ values used to create the
--- currently active pipeline, for both front and back faces.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetStencilOpEXT-None-03351# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState extendedDynamicState>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetStencilOpEXT-faceMask-parameter# @faceMask@ /must/ be
---     a valid combination of
---     'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' values
---
--- -   #VUID-vkCmdSetStencilOpEXT-faceMask-requiredbitmask# @faceMask@
---     /must/ not be @0@
---
--- -   #VUID-vkCmdSetStencilOpEXT-failOp-parameter# @failOp@ /must/ be a
---     valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
---
--- -   #VUID-vkCmdSetStencilOpEXT-passOp-parameter# @passOp@ /must/ be a
---     valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
---
--- -   #VUID-vkCmdSetStencilOpEXT-depthFailOp-parameter# @depthFailOp@
---     /must/ be a valid 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
---
--- -   #VUID-vkCmdSetStencilOpEXT-compareOp-parameter# @compareOp@ /must/
---     be a valid 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
---
--- -   #VUID-vkCmdSetStencilOpEXT-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-vkCmdSetStencilOpEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.CompareOp.CompareOp',
--- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlags',
--- 'Vulkan.Core10.Enums.StencilOp.StencilOp'
-cmdSetStencilOpEXT :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer into which the command will be
-                      -- recorded.
-                      CommandBuffer
-                   -> -- | @faceMask@ is a bitmask of
-                      -- 'Vulkan.Core10.Enums.StencilFaceFlagBits.StencilFaceFlagBits' specifying
-                      -- the set of stencil state for which to update the stencil operation.
-                      ("faceMask" ::: StencilFaceFlags)
-                   -> -- | @failOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying
-                      -- the action performed on samples that fail the stencil test.
-                      ("failOp" ::: StencilOp)
-                   -> -- | @passOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value specifying
-                      -- the action performed on samples that pass both the depth and stencil
-                      -- tests.
-                      ("passOp" ::: StencilOp)
-                   -> -- | @depthFailOp@ is a 'Vulkan.Core10.Enums.StencilOp.StencilOp' value
-                      -- specifying the action performed on samples that pass the stencil test
-                      -- and fail the depth test.
-                      ("depthFailOp" ::: StencilOp)
-                   -> -- | @compareOp@ is a 'Vulkan.Core10.Enums.CompareOp.CompareOp' value
-                      -- specifying the comparison operator used in the stencil test.
-                      CompareOp
-                   -> io ()
-cmdSetStencilOpEXT commandBuffer faceMask failOp passOp depthFailOp compareOp = liftIO $ do
-  let vkCmdSetStencilOpEXTPtr = pVkCmdSetStencilOpEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetStencilOpEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetStencilOpEXT is null" Nothing Nothing
-  let vkCmdSetStencilOpEXT' = mkVkCmdSetStencilOpEXT vkCmdSetStencilOpEXTPtr
-  traceAroundEvent "vkCmdSetStencilOpEXT" (vkCmdSetStencilOpEXT' (commandBufferHandle (commandBuffer)) (faceMask) (failOp) (passOp) (depthFailOp) (compareOp))
-  pure $ ()
-
-
--- | VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - Structure describing
--- what extended dynamic state can be used
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceExtendedDynamicStateFeaturesEXT' 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. 'PhysicalDeviceExtendedDynamicStateFeaturesEXT' /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_extended_dynamic_state VK_EXT_extended_dynamic_state>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceExtendedDynamicStateFeaturesEXT = PhysicalDeviceExtendedDynamicStateFeaturesEXT
-  { -- | #features-extendedDynamicState# @extendedDynamicState@ indicates that
-    -- the implementation supports the following dynamic states:
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT'
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
+-- [__Contact__]
+--
+--     -   Piers Daniell
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_extended_dynamic_state] @pdaniell-nv%0A<<Here describe the issue or question you have about the VK_EXT_extended_dynamic_state extension>> >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2019-12-09
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
+-- [__IP Status__]
+--     No known IP claims.
+--
+-- [__Contributors__]
+--
+--     -   Dan Ginsburg, Valve Corporation
+--
+--     -   Graeme Leese, Broadcom
+--
+--     -   Hans-Kristian Arntzen, Valve Corporation
+--
+--     -   Jan-Harald Fredriksen, Arm Limited
+--
+--     -   Jason Ekstrand, Intel
+--
+--     -   Jeff Bolz, NVIDIA
+--
+--     -   Jesse Hall, Google
+--
+--     -   Philip Rebohle, Valve Corporation
+--
+--     -   Stuart Smith, Imagination Technologies
+--
+--     -   Tobias Hector, AMD
+--
+-- == Description
+--
+-- This extension adds some more dynamic state to support applications that
+-- need to reduce the number of pipeline state objects they compile and
+-- bind.
+--
+-- == New Commands
+--
+-- -   'cmdBindVertexBuffers2EXT'
+--
+-- -   'cmdSetCullModeEXT'
+--
+-- -   'cmdSetDepthBoundsTestEnableEXT'
+--
+-- -   'cmdSetDepthCompareOpEXT'
+--
+-- -   'cmdSetDepthTestEnableEXT'
+--
+-- -   'cmdSetDepthWriteEnableEXT'
+--
+-- -   'cmdSetFrontFaceEXT'
+--
+-- -   'cmdSetPrimitiveTopologyEXT'
+--
+-- -   'cmdSetScissorWithCountEXT'
+--
+-- -   'cmdSetStencilOpEXT'
+--
+-- -   'cmdSetStencilTestEnableEXT'
+--
+-- -   'cmdSetViewportWithCountEXT'
+--
+-- == New Structures
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceExtendedDynamicStateFeaturesEXT'
+--
+-- == New Enum Constants
+--
+-- -   'EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME'
+--
+-- -   'EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
+--
+--     -   'DYNAMIC_STATE_CULL_MODE_EXT'
+--
+--     -   'DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'
+--
+--     -   'DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'
+--
+--     -   'DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'
+--
+--     -   'DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'
+--
+--     -   'DYNAMIC_STATE_FRONT_FACE_EXT'
+--
+--     -   'DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--
+--     -   'DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--
+--     -   'DYNAMIC_STATE_STENCIL_OP_EXT'
+--
+--     -   'DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'
+--
+--     -   'DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--
+--     -   'DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT'
+--
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. All dynamic state enumerants
+-- and entry points in this extension are included in core Vulkan 1.3, with
+-- the EXT suffix omitted. The feature structure is not promoted. Extension
+-- interfaces that were promoted remain available as aliases of the core
+-- functionality.
+--
+-- == Version History
+--
+-- -   Revision 1, 2019-12-09 (Piers Daniell)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- 'PhysicalDeviceExtendedDynamicStateFeaturesEXT',
+-- 'cmdBindVertexBuffers2EXT', 'cmdSetCullModeEXT',
+-- 'cmdSetDepthBoundsTestEnableEXT', 'cmdSetDepthCompareOpEXT',
+-- 'cmdSetDepthTestEnableEXT', 'cmdSetDepthWriteEnableEXT',
+-- 'cmdSetFrontFaceEXT', 'cmdSetPrimitiveTopologyEXT',
+-- 'cmdSetScissorWithCountEXT', 'cmdSetStencilOpEXT',
+-- 'cmdSetStencilTestEnableEXT', 'cmdSetViewportWithCountEXT'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_EXT_extended_dynamic_state  ( pattern DYNAMIC_STATE_CULL_MODE_EXT
+                                                        , pattern DYNAMIC_STATE_FRONT_FACE_EXT
+                                                        , pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
+                                                        , pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT
+                                                        , pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT
+                                                        , pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
+                                                        , pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT
+                                                        , pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT
+                                                        , pattern DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT
+                                                        , pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT
+                                                        , pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT
+                                                        , pattern DYNAMIC_STATE_STENCIL_OP_EXT
+                                                        , cmdSetCullModeEXT
+                                                        , cmdSetFrontFaceEXT
+                                                        , cmdSetPrimitiveTopologyEXT
+                                                        , cmdSetViewportWithCountEXT
+                                                        , cmdSetScissorWithCountEXT
+                                                        , cmdBindVertexBuffers2EXT
+                                                        , cmdSetDepthTestEnableEXT
+                                                        , cmdSetDepthWriteEnableEXT
+                                                        , cmdSetDepthCompareOpEXT
+                                                        , cmdSetDepthBoundsTestEnableEXT
+                                                        , cmdSetStencilTestEnableEXT
+                                                        , cmdSetStencilOpEXT
+                                                        , PhysicalDeviceExtendedDynamicStateFeaturesEXT(..)
+                                                        , EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION
+                                                        , pattern EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION
+                                                        , EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME
+                                                        , pattern EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME
+                                                        ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Kind (Type)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdBindVertexBuffers2)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetCullMode)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetDepthBoundsTestEnable)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetDepthCompareOp)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetDepthTestEnable)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetDepthWriteEnable)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetFrontFace)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetPrimitiveTopology)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetScissorWithCount)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetStencilOp)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetStencilTestEnable)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state (cmdSetViewportWithCount)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_CULL_MODE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_DEPTH_COMPARE_OP))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_DEPTH_TEST_ENABLE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_DEPTH_WRITE_ENABLE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_FRONT_FACE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_PRIMITIVE_TOPOLOGY))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_SCISSOR_WITH_COUNT))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_STENCIL_OP))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_STENCIL_TEST_ENABLE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_VIEWPORT_WITH_COUNT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT))
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_CULL_MODE_EXT"
+pattern DYNAMIC_STATE_CULL_MODE_EXT = DYNAMIC_STATE_CULL_MODE
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_FRONT_FACE_EXT"
+pattern DYNAMIC_STATE_FRONT_FACE_EXT = DYNAMIC_STATE_FRONT_FACE
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT"
+pattern DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT"
+pattern DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = DYNAMIC_STATE_VIEWPORT_WITH_COUNT
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT"
+pattern DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = DYNAMIC_STATE_SCISSOR_WITH_COUNT
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT"
+pattern DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT"
+pattern DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = DYNAMIC_STATE_DEPTH_TEST_ENABLE
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT"
+pattern DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = DYNAMIC_STATE_DEPTH_WRITE_ENABLE
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT"
+pattern DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = DYNAMIC_STATE_DEPTH_COMPARE_OP
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT"
+pattern DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT"
+pattern DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = DYNAMIC_STATE_STENCIL_TEST_ENABLE
+
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_STENCIL_OP_EXT"
+pattern DYNAMIC_STATE_STENCIL_OP_EXT = DYNAMIC_STATE_STENCIL_OP
+
+
+-- No documentation found for TopLevel "vkCmdSetCullModeEXT"
+cmdSetCullModeEXT = cmdSetCullMode
+
+
+-- No documentation found for TopLevel "vkCmdSetFrontFaceEXT"
+cmdSetFrontFaceEXT = cmdSetFrontFace
+
+
+-- No documentation found for TopLevel "vkCmdSetPrimitiveTopologyEXT"
+cmdSetPrimitiveTopologyEXT = cmdSetPrimitiveTopology
+
+
+-- No documentation found for TopLevel "vkCmdSetViewportWithCountEXT"
+cmdSetViewportWithCountEXT = cmdSetViewportWithCount
+
+
+-- No documentation found for TopLevel "vkCmdSetScissorWithCountEXT"
+cmdSetScissorWithCountEXT = cmdSetScissorWithCount
+
+
+-- No documentation found for TopLevel "vkCmdBindVertexBuffers2EXT"
+cmdBindVertexBuffers2EXT = cmdBindVertexBuffers2
+
+
+-- No documentation found for TopLevel "vkCmdSetDepthTestEnableEXT"
+cmdSetDepthTestEnableEXT = cmdSetDepthTestEnable
+
+
+-- No documentation found for TopLevel "vkCmdSetDepthWriteEnableEXT"
+cmdSetDepthWriteEnableEXT = cmdSetDepthWriteEnable
+
+
+-- No documentation found for TopLevel "vkCmdSetDepthCompareOpEXT"
+cmdSetDepthCompareOpEXT = cmdSetDepthCompareOp
+
+
+-- No documentation found for TopLevel "vkCmdSetDepthBoundsTestEnableEXT"
+cmdSetDepthBoundsTestEnableEXT = cmdSetDepthBoundsTestEnable
+
+
+-- No documentation found for TopLevel "vkCmdSetStencilTestEnableEXT"
+cmdSetStencilTestEnableEXT = cmdSetStencilTestEnable
+
+
+-- No documentation found for TopLevel "vkCmdSetStencilOpEXT"
+cmdSetStencilOpEXT = cmdSetStencilOp
+
+
+-- | VkPhysicalDeviceExtendedDynamicStateFeaturesEXT - Structure describing
+-- what extended dynamic state can be used
+--
+-- = Members
+--
+-- This structure describes the following feature:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceExtendedDynamicStateFeaturesEXT' 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. 'PhysicalDeviceExtendedDynamicStateFeaturesEXT' /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_extended_dynamic_state VK_EXT_extended_dynamic_state>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceExtendedDynamicStateFeaturesEXT = PhysicalDeviceExtendedDynamicStateFeaturesEXT
+  { -- | #features-extendedDynamicState# @extendedDynamicState@ indicates that
+    -- the implementation supports the following dynamic states:
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE'
+    --
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP'
     extendedDynamicState :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs-boot b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state.hs-boot
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2019-12-09
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -106,34 +115,42 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_CULL_MODE_EXT'
+--     -   'DYNAMIC_STATE_CULL_MODE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'
+--     -   'DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_FRONT_FACE_EXT'
+--     -   'DYNAMIC_STATE_FRONT_FACE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     -   'DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     -   'DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_OP_EXT'
+--     -   'DYNAMIC_STATE_STENCIL_OP_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     -   'DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     -   'DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. All dynamic state enumerants
+-- and entry points in this extension are included in core Vulkan 1.3, with
+-- the EXT suffix omitted. The feature structure is not promoted. Extension
+-- interfaces that were promoted remain available as aliases of the core
+-- functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-12-09 (Piers Daniell)
@@ -153,7 +170,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs
--- a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2021-04-12
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -78,20 +87,32 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
 --
 --     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
 --
 --     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. The dynamic state enumerants
+-- 'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT',
+-- 'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT', and
+-- 'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'; and the corresponding
+-- entry points in this extension are included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The enumerants and entry points for dynamic logic
+-- operation and patch control points are not promoted, nor is the feature
+-- structure. Extension interfaces that were promoted remain available as
+-- aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2021-04-12 (Vikram Kushwaha)
@@ -108,14 +129,17 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
 module Vulkan.Extensions.VK_EXT_extended_dynamic_state2  ( cmdSetPatchControlPointsEXT
+                                                         , cmdSetLogicOpEXT
+                                                         , pattern DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT
+                                                         , pattern DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT
+                                                         , pattern DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
                                                          , cmdSetRasterizerDiscardEnableEXT
                                                          , cmdSetDepthBiasEnableEXT
-                                                         , cmdSetLogicOpEXT
                                                          , cmdSetPrimitiveRestartEnableEXT
                                                          , PhysicalDeviceExtendedDynamicState2FeaturesEXT(..)
                                                          , EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION
@@ -153,21 +177,23 @@
 import Data.Kind (Type)
 import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2 (cmdSetDepthBiasEnable)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2 (cmdSetPrimitiveRestartEnable)
+import Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2 (cmdSetRasterizerDiscardEnable)
 import Vulkan.NamedType ((:::))
 import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.FundamentalTypes (Bool32(..))
 import Vulkan.Core10.Handles (CommandBuffer)
 import Vulkan.Core10.Handles (CommandBuffer(..))
 import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
 import Vulkan.Core10.Handles (CommandBuffer_T)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetDepthBiasEnableEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetLogicOpEXT))
 import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPatchControlPointsEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetPrimitiveRestartEnableEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetRasterizerDiscardEnableEXT))
 import Vulkan.Core10.Enums.LogicOp (LogicOp)
 import Vulkan.Core10.Enums.LogicOp (LogicOp(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_DEPTH_BIAS_ENABLE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE))
+import Vulkan.Core10.Enums.DynamicState (DynamicState(DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT))
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
@@ -193,7 +219,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetPatchControlPointsEXT-None-04873# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2PatchControlPoints extendedDynamicState2PatchControlPoints>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetPatchControlPointsEXT-patchControlPoints-04874#
@@ -258,170 +284,6 @@
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
 #endif
-  "dynamic" mkVkCmdSetRasterizerDiscardEnableEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
-
--- | vkCmdSetRasterizerDiscardEnableEXT - Control whether primitives are
--- discarded before the rasterization stage dynamically for a command
--- buffer
---
--- = Description
---
--- This command sets the discard enable for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@rasterizerDiscardEnable@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetRasterizerDiscardEnableEXT-None-04871# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-recording#
---     @commandBuffer@ /must/ be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
---
--- -   #VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 VK_EXT_extended_dynamic_state2>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetRasterizerDiscardEnableEXT :: forall io
-                                  . (MonadIO io)
-                                 => -- | @commandBuffer@ is the command buffer into which the command will be
-                                    -- recorded.
-                                    CommandBuffer
-                                 -> -- | @rasterizerDiscardEnable@ controls whether primitives are discarded
-                                    -- immediately before the rasterization stage.
-                                    ("rasterizerDiscardEnable" ::: Bool)
-                                 -> io ()
-cmdSetRasterizerDiscardEnableEXT commandBuffer rasterizerDiscardEnable = liftIO $ do
-  let vkCmdSetRasterizerDiscardEnableEXTPtr = pVkCmdSetRasterizerDiscardEnableEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetRasterizerDiscardEnableEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetRasterizerDiscardEnableEXT is null" Nothing Nothing
-  let vkCmdSetRasterizerDiscardEnableEXT' = mkVkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXTPtr
-  traceAroundEvent "vkCmdSetRasterizerDiscardEnableEXT" (vkCmdSetRasterizerDiscardEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (rasterizerDiscardEnable)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetDepthBiasEnableEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
-
--- | vkCmdSetDepthBiasEnableEXT - Control whether to bias fragment depth
--- values dynamically for a command buffer
---
--- = Description
---
--- This command sets the depth bias enable for subsequent drawing commands
--- when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineRasterizationStateCreateInfo'::@depthBiasEnable@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetDepthBiasEnableEXT-None-04872# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-recording#
---     @commandBuffer@ /must/ be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
---
--- -   #VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 VK_EXT_extended_dynamic_state2>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetDepthBiasEnableEXT :: forall io
-                          . (MonadIO io)
-                         => -- | @commandBuffer@ is the command buffer into which the command will be
-                            -- recorded.
-                            CommandBuffer
-                         -> -- | @depthBiasEnable@ controls whether to bias fragment depth values.
-                            ("depthBiasEnable" ::: Bool)
-                         -> io ()
-cmdSetDepthBiasEnableEXT commandBuffer depthBiasEnable = liftIO $ do
-  let vkCmdSetDepthBiasEnableEXTPtr = pVkCmdSetDepthBiasEnableEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetDepthBiasEnableEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetDepthBiasEnableEXT is null" Nothing Nothing
-  let vkCmdSetDepthBiasEnableEXT' = mkVkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXTPtr
-  traceAroundEvent "vkCmdSetDepthBiasEnableEXT" (vkCmdSetDepthBiasEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (depthBiasEnable)))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
   "dynamic" mkVkCmdSetLogicOpEXT
   :: FunPtr (Ptr CommandBuffer_T -> LogicOp -> IO ()) -> Ptr CommandBuffer_T -> LogicOp -> IO ()
 
@@ -441,7 +303,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetLogicOpEXT-None-04867# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-extendedDynamicState2LogicOp extendedDynamicState2LogicOp>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -500,90 +362,30 @@
   pure $ ()
 
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetPrimitiveRestartEnableEXT
-  :: FunPtr (Ptr CommandBuffer_T -> Bool32 -> IO ()) -> Ptr CommandBuffer_T -> Bool32 -> IO ()
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT"
+pattern DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
 
--- | vkCmdSetPrimitiveRestartEnableEXT - Set primitive assembly restart state
--- dynamically for a command buffer
---
--- = Description
---
--- This command sets the primitive restart enable for subsequent drawing
--- commands when the graphics pipeline is created with
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
--- set in
--- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
--- Otherwise, this state is specified by the
--- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
--- value used to create the currently active pipeline.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetPrimitiveRestartEnableEXT-None-04866# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-extendedDynamicState2 extendedDynamicState2>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-recording#
---     @commandBuffer@ /must/ be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle recording state>
---
--- -   #VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 VK_EXT_extended_dynamic_state2>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdSetPrimitiveRestartEnableEXT :: forall io
-                                 . (MonadIO io)
-                                => -- | @commandBuffer@ is the command buffer into which the command will be
-                                   -- recorded.
-                                   CommandBuffer
-                                -> -- | @primitiveRestartEnable@ controls whether a special vertex index value
-                                   -- is treated as restarting the assembly of primitives. It behaves in the
-                                   -- same way as
-                                   -- 'Vulkan.Core10.Pipeline.PipelineInputAssemblyStateCreateInfo'::@primitiveRestartEnable@
-                                   ("primitiveRestartEnable" ::: Bool)
-                                -> io ()
-cmdSetPrimitiveRestartEnableEXT commandBuffer primitiveRestartEnable = liftIO $ do
-  let vkCmdSetPrimitiveRestartEnableEXTPtr = pVkCmdSetPrimitiveRestartEnableEXT (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdSetPrimitiveRestartEnableEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetPrimitiveRestartEnableEXT is null" Nothing Nothing
-  let vkCmdSetPrimitiveRestartEnableEXT' = mkVkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXTPtr
-  traceAroundEvent "vkCmdSetPrimitiveRestartEnableEXT" (vkCmdSetPrimitiveRestartEnableEXT' (commandBufferHandle (commandBuffer)) (boolToBool32 (primitiveRestartEnable)))
-  pure $ ()
 
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT"
+pattern DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = DYNAMIC_STATE_DEPTH_BIAS_ENABLE
 
+
+-- No documentation found for TopLevel "VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT"
+pattern DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
+
+
+-- No documentation found for TopLevel "vkCmdSetRasterizerDiscardEnableEXT"
+cmdSetRasterizerDiscardEnableEXT = cmdSetRasterizerDiscardEnable
+
+
+-- No documentation found for TopLevel "vkCmdSetDepthBiasEnableEXT"
+cmdSetDepthBiasEnableEXT = cmdSetDepthBiasEnable
+
+
+-- No documentation found for TopLevel "vkCmdSetPrimitiveRestartEnableEXT"
+cmdSetPrimitiveRestartEnableEXT = cmdSetPrimitiveRestartEnable
+
+
 -- | VkPhysicalDeviceExtendedDynamicState2FeaturesEXT - Structure describing
 -- what extended dynamic state can be used
 --
@@ -614,11 +416,11 @@
   { -- | #features-extendedDynamicState2# @extendedDynamicState2@ indicates that
     -- the implementation supports the following dynamic states:
     --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
     --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE'
     --
-    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+    -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
     extendedDynamicState2 :: Bool
   , -- | #features-extendedDynamicState2LogicOp# @extendedDynamicState2LogicOp@
     -- indicates that the implementation supports the following dynamic state:
diff --git a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs-boot b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_extended_dynamic_state2.hs-boot
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Vikram Kushwaha
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2021-04-12
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -78,20 +87,32 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.DynamicState.DynamicState':
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
 --
 --     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_LOGIC_OP_EXT'
 --
 --     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --
---     -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     -   'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. The dynamic state enumerants
+-- 'DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT',
+-- 'DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT', and
+-- 'DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'; and the corresponding
+-- entry points in this extension are included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The enumerants and entry points for dynamic logic
+-- operation and patch control points are not promoted, nor is the feature
+-- structure. Extension interfaces that were promoted remain available as
+-- aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2021-04-12 (Vikram Kushwaha)
@@ -108,7 +129,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_extended_dynamic_state2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_dma_buf.hs b/src/Vulkan/Extensions/VK_EXT_external_memory_dma_buf.hs
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_dma_buf.hs
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_dma_buf.hs
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_dma_buf Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_dma_buf Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs
@@ -165,7 +165,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -323,7 +323,7 @@
 -- continue to access the memory through the host pointer but it is the
 -- application’s responsibility to synchronize device and non-device access
 -- to the payload as defined in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-device-hostaccess Host Access to Device Memory Objects>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-device-hostaccess Host Access to Device Memory Objects>.
 --
 -- Applications /can/ import the same payload into multiple instances of
 -- Vulkan and multiple times into a given Vulkan instance. However,
diff --git a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_external_memory_host.hs-boot
@@ -165,7 +165,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_external_memory_host Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs b/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs
--- a/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs
+++ b/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs-boot b/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_filter_cubic.hs-boot
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_filter_cubic Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs
@@ -153,19 +153,19 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
 --
 -- == Version History
 --
@@ -186,7 +186,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -197,9 +197,6 @@
                                                       , pattern EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION
                                                       , EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME
                                                       , pattern EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME
-                                                      , FormatFeatureFlagBits2KHR(..)
-                                                      , FormatFeatureFlags2KHR
-                                                      , Flags64
                                                       ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -228,9 +225,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
 -- | VkPhysicalDeviceFragmentDensityMapFeaturesEXT - Structure describing
 -- fragment density map features that can be supported by an implementation
 --
@@ -278,9 +272,9 @@
     -- implementation supports regular non-subsampled image attachments with
     -- fragment density map render passes. If this feature is not enabled,
     -- render passes with a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
     -- /must/ only have
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-subsamplesampler subsampled attachments>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-subsamplesampler subsampled attachments>
     -- bound.
     fragmentDensityMapNonSubsampledImages :: Bool
   }
@@ -355,7 +349,7 @@
 data PhysicalDeviceFragmentDensityMapPropertiesEXT = PhysicalDeviceFragmentDensityMapPropertiesEXT
   { -- | #limits-minFragmentDensityTexelSize# @minFragmentDensityTexelSize@ is
     -- the minimum
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-fragment-density-texel-size fragment density texel size>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-fragment-density-texel-size fragment density texel size>.
     minFragmentDensityTexelSize :: Extent2D
   , -- | #limits-maxFragmentDensityTexelSize# @maxFragmentDensityTexelSize@ is
     -- the maximum fragment density texel size.
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs-boot b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map.hs-boot
@@ -153,19 +153,19 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fraginvocationcount FragInvocationCountEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-fragsize FragSizeEXT>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentDensityEXT FragmentDensityEXT>
 --
 -- == Version History
 --
@@ -186,7 +186,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs b/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs
@@ -131,9 +131,9 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
 --
 -- == Version History
 --
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs-boot b/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_density_map2.hs-boot
@@ -131,9 +131,9 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT'
 --
 -- == Version History
 --
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_density_map2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
--- a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs
@@ -101,11 +101,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
 --
 -- == Version History
 --
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs-boot b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_fragment_shader_interlock.hs-boot
@@ -101,11 +101,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderSampleInterlockEXT FragmentShaderInterlockEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderPixelInterlockEXT FragmentShaderPixelInterlockEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentShaderShadingRateInterlockEXT FragmentShaderShadingRateInterlockEXT>
 --
 -- == Version History
 --
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_fragment_shader_interlock Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
--- a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
+++ b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs
@@ -251,7 +251,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_full_screen_exclusive.hs-boot
@@ -251,7 +251,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_full_screen_exclusive Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_global_priority.hs b/src/Vulkan/Extensions/VK_EXT_global_priority.hs
--- a/src/Vulkan/Extensions/VK_EXT_global_priority.hs
+++ b/src/Vulkan/Extensions/VK_EXT_global_priority.hs
@@ -21,6 +21,10 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to @VK_KHR_global_priority@ extension
+--
 -- [__Contact__]
 --
 --     -   Andres Rodriguez
@@ -50,7 +54,7 @@
 -- cases it may be useful to extend this concept to a system-wide scope.
 -- This extension provides a mechanism for callers to set their system-wide
 -- priority. The default queue priority is
--- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
+-- 'Vulkan.Extensions.VK_KHR_global_priority.QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
 --
 -- The driver implementation will attempt to skew hardware resource
 -- allocation in favour of the higher-priority task. Therefore,
@@ -65,9 +69,9 @@
 -- Abuse of this feature may result in starving the rest of the system from
 -- hardware resources. Therefore, the driver implementation may deny
 -- requests to acquire a priority above the default priority
--- ('QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT') if the caller does not have
--- sufficient privileges. In this scenario
--- 'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT' is returned.
+-- ('Vulkan.Extensions.VK_KHR_global_priority.QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT')
+-- if the caller does not have sufficient privileges. In this scenario
+-- 'ERROR_NOT_PERMITTED_EXT' is returned.
 --
 -- The driver implementation may fail the queue allocation request if
 -- resources required to complete the operation have been exhausted (either
@@ -92,11 +96,11 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
---     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT'
+--     -   'ERROR_NOT_PERMITTED_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT'
 --
 -- == Version History
 --
@@ -115,168 +119,43 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_global_priority 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_global_priority  ( DeviceQueueGlobalPriorityCreateInfoEXT(..)
-                                                 , QueueGlobalPriorityEXT( QUEUE_GLOBAL_PRIORITY_LOW_EXT
-                                                                         , QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT
-                                                                         , QUEUE_GLOBAL_PRIORITY_HIGH_EXT
-                                                                         , QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
-                                                                         , ..
-                                                                         )
+module Vulkan.Extensions.VK_EXT_global_priority  ( pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
+                                                 , pattern ERROR_NOT_PERMITTED_EXT
+                                                 , QueueGlobalPriorityEXT
+                                                 , DeviceQueueGlobalPriorityCreateInfoEXT
                                                  , EXT_GLOBAL_PRIORITY_SPEC_VERSION
                                                  , pattern EXT_GLOBAL_PRIORITY_SPEC_VERSION
                                                  , EXT_GLOBAL_PRIORITY_EXTENSION_NAME
                                                  , pattern EXT_GLOBAL_PRIORITY_EXTENSION_NAME
+                                                 , DeviceQueueGlobalPriorityCreateInfoKHR(..)
+                                                 , QueueGlobalPriorityKHR(..)
                                                  ) where
 
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showsPrec)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Data.Int (Int32)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Kind (Type)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT))
--- | VkDeviceQueueGlobalPriorityCreateInfoEXT - Specify a system wide
--- priority
---
--- = Description
---
--- A queue created without specifying
--- 'DeviceQueueGlobalPriorityCreateInfoEXT' will default to
--- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority VK_EXT_global_priority>,
--- 'QueueGlobalPriorityEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoEXT
-  { -- | @globalPriority@ is the system-wide priority associated to this queue as
-    -- specified by 'QueueGlobalPriorityEXT'
-    --
-    -- #VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter#
-    -- @globalPriority@ /must/ be a valid 'QueueGlobalPriorityEXT' value
-    globalPriority :: QueueGlobalPriorityEXT }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DeviceQueueGlobalPriorityCreateInfoEXT)
-#endif
-deriving instance Show DeviceQueueGlobalPriorityCreateInfoEXT
+import Vulkan.Extensions.VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfoKHR)
+import Vulkan.Extensions.VK_KHR_global_priority (QueueGlobalPriorityKHR)
+import Vulkan.Core10.Enums.Result (Result(ERROR_NOT_PERMITTED_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR))
+import Vulkan.Extensions.VK_KHR_global_priority (DeviceQueueGlobalPriorityCreateInfoKHR(..))
+import Vulkan.Extensions.VK_KHR_global_priority (QueueGlobalPriorityKHR(..))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR
 
-instance ToCStruct DeviceQueueGlobalPriorityCreateInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DeviceQueueGlobalPriorityCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityEXT)) (globalPriority)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityEXT)) (zero)
-    f
 
-instance FromCStruct DeviceQueueGlobalPriorityCreateInfoEXT where
-  peekCStruct p = do
-    globalPriority <- peek @QueueGlobalPriorityEXT ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityEXT))
-    pure $ DeviceQueueGlobalPriorityCreateInfoEXT
-             globalPriority
+-- No documentation found for TopLevel "VK_ERROR_NOT_PERMITTED_EXT"
+pattern ERROR_NOT_PERMITTED_EXT = ERROR_NOT_PERMITTED_KHR
 
-instance Storable DeviceQueueGlobalPriorityCreateInfoEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero DeviceQueueGlobalPriorityCreateInfoEXT where
-  zero = DeviceQueueGlobalPriorityCreateInfoEXT
-           zero
+-- No documentation found for TopLevel "VkQueueGlobalPriorityEXT"
+type QueueGlobalPriorityEXT = QueueGlobalPriorityKHR
 
 
--- | VkQueueGlobalPriorityEXT - Values specifying a system-wide queue
--- priority
---
--- = Description
---
--- Priority values are sorted in ascending order. A comparison operation on
--- the enum values can be used to determine the priority order.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority VK_EXT_global_priority>,
--- 'DeviceQueueGlobalPriorityCreateInfoEXT',
--- 'Vulkan.Extensions.VK_EXT_global_priority_query.QueueFamilyGlobalPriorityPropertiesEXT'
-newtype QueueGlobalPriorityEXT = QueueGlobalPriorityEXT Int32
-  deriving newtype (Eq, Ord, Storable, Zero)
--- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error
-
--- | 'QUEUE_GLOBAL_PRIORITY_LOW_EXT' is below the system default. Useful for
--- non-interactive tasks.
-pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT      = QueueGlobalPriorityEXT 128
--- | 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT' is the system default priority.
-pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT   = QueueGlobalPriorityEXT 256
--- | 'QUEUE_GLOBAL_PRIORITY_HIGH_EXT' is above the system default.
-pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT     = QueueGlobalPriorityEXT 512
--- | 'QUEUE_GLOBAL_PRIORITY_REALTIME_EXT' is the highest priority. Useful for
--- critical tasks.
-pattern QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = QueueGlobalPriorityEXT 1024
-{-# complete QUEUE_GLOBAL_PRIORITY_LOW_EXT,
-             QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT,
-             QUEUE_GLOBAL_PRIORITY_HIGH_EXT,
-             QUEUE_GLOBAL_PRIORITY_REALTIME_EXT :: QueueGlobalPriorityEXT #-}
-
-conNameQueueGlobalPriorityEXT :: String
-conNameQueueGlobalPriorityEXT = "QueueGlobalPriorityEXT"
-
-enumPrefixQueueGlobalPriorityEXT :: String
-enumPrefixQueueGlobalPriorityEXT = "QUEUE_GLOBAL_PRIORITY_"
-
-showTableQueueGlobalPriorityEXT :: [(QueueGlobalPriorityEXT, String)]
-showTableQueueGlobalPriorityEXT =
-  [ (QUEUE_GLOBAL_PRIORITY_LOW_EXT     , "LOW_EXT")
-  , (QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT  , "MEDIUM_EXT")
-  , (QUEUE_GLOBAL_PRIORITY_HIGH_EXT    , "HIGH_EXT")
-  , (QUEUE_GLOBAL_PRIORITY_REALTIME_EXT, "REALTIME_EXT")
-  ]
-
-instance Show QueueGlobalPriorityEXT where
-  showsPrec = enumShowsPrec enumPrefixQueueGlobalPriorityEXT
-                            showTableQueueGlobalPriorityEXT
-                            conNameQueueGlobalPriorityEXT
-                            (\(QueueGlobalPriorityEXT x) -> x)
-                            (showsPrec 11)
-
-instance Read QueueGlobalPriorityEXT where
-  readPrec = enumReadPrec enumPrefixQueueGlobalPriorityEXT
-                          showTableQueueGlobalPriorityEXT
-                          conNameQueueGlobalPriorityEXT
-                          QueueGlobalPriorityEXT
+-- No documentation found for TopLevel "VkDeviceQueueGlobalPriorityCreateInfoEXT"
+type DeviceQueueGlobalPriorityCreateInfoEXT = DeviceQueueGlobalPriorityCreateInfoKHR
 
 
 type EXT_GLOBAL_PRIORITY_SPEC_VERSION = 2
diff --git a/src/Vulkan/Extensions/VK_EXT_global_priority.hs-boot b/src/Vulkan/Extensions/VK_EXT_global_priority.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_global_priority.hs-boot
+++ /dev/null
@@ -1,134 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_global_priority - device extension
---
--- == VK_EXT_global_priority
---
--- [__Name String__]
---     @VK_EXT_global_priority@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     175
---
--- [__Revision__]
---     2
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
--- [__Contact__]
---
---     -   Andres Rodriguez
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_global_priority] @lostgoat%0A<<Here describe the issue or question you have about the VK_EXT_global_priority extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2017-10-06
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Andres Rodriguez, Valve
---
---     -   Pierre-Loup Griffais, Valve
---
---     -   Dan Ginsburg, Valve
---
---     -   Mitch Singer, AMD
---
--- == Description
---
--- In Vulkan, users can specify device-scope queue priorities. In some
--- cases it may be useful to extend this concept to a system-wide scope.
--- This extension provides a mechanism for callers to set their system-wide
--- priority. The default queue priority is
--- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
---
--- The driver implementation will attempt to skew hardware resource
--- allocation in favour of the higher-priority task. Therefore,
--- higher-priority work may retain similar latency and throughput
--- characteristics even if the system is congested with lower priority
--- work.
---
--- The global priority level of a queue shall take precedence over the
--- per-process queue priority
--- ('Vulkan.Core10.Device.DeviceQueueCreateInfo'::@pQueuePriorities@).
---
--- Abuse of this feature may result in starving the rest of the system from
--- hardware resources. Therefore, the driver implementation may deny
--- requests to acquire a priority above the default priority
--- ('QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT') if the caller does not have
--- sufficient privileges. In this scenario
--- 'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT' is returned.
---
--- The driver implementation may fail the queue allocation request if
--- resources required to complete the operation have been exhausted (either
--- by the same process or a different process). In this scenario
--- 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' is returned.
---
--- == New Structures
---
--- -   Extending 'Vulkan.Core10.Device.DeviceQueueCreateInfo':
---
---     -   'DeviceQueueGlobalPriorityCreateInfoEXT'
---
--- == New Enums
---
--- -   'QueueGlobalPriorityEXT'
---
--- == New Enum Constants
---
--- -   'EXT_GLOBAL_PRIORITY_EXTENSION_NAME'
---
--- -   'EXT_GLOBAL_PRIORITY_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.Result.Result':
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT'
---
--- == Version History
---
--- -   Revision 2, 2017-11-03 (Andres Rodriguez)
---
---     -   Fixed VkQueueGlobalPriorityEXT missing _EXT suffix
---
--- -   Revision 1, 2017-10-06 (Andres Rodriguez)
---
---     -   First version.
---
--- == See Also
---
--- 'DeviceQueueGlobalPriorityCreateInfoEXT', 'QueueGlobalPriorityEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority 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_global_priority  (DeviceQueueGlobalPriorityCreateInfoEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data DeviceQueueGlobalPriorityCreateInfoEXT
-
-instance ToCStruct DeviceQueueGlobalPriorityCreateInfoEXT
-instance Show DeviceQueueGlobalPriorityCreateInfoEXT
-
-instance FromCStruct DeviceQueueGlobalPriorityCreateInfoEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs b/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs
--- a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs
+++ b/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs
@@ -25,6 +25,10 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to @VK_KHR_global_priority@ extension
+--
 -- [__Contact__]
 --
 --     -   Yiwei Zhang
@@ -76,9 +80,9 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT'
 --
 -- == Issues
 --
@@ -113,222 +117,55 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_global_priority_query 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_global_priority_query  ( PhysicalDeviceGlobalPriorityQueryFeaturesEXT(..)
-                                                       , QueueFamilyGlobalPriorityPropertiesEXT(..)
+module Vulkan.Extensions.VK_EXT_global_priority_query  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT
+                                                       , pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT
+                                                       , pattern MAX_GLOBAL_PRIORITY_SIZE_EXT
+                                                       , PhysicalDeviceGlobalPriorityQueryFeaturesEXT
+                                                       , QueueFamilyGlobalPriorityPropertiesEXT
                                                        , EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION
                                                        , pattern EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION
                                                        , EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME
                                                        , pattern EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME
-                                                       , QueueGlobalPriorityEXT(..)
-                                                       , MAX_GLOBAL_PRIORITY_SIZE_EXT
-                                                       , pattern MAX_GLOBAL_PRIORITY_SIZE_EXT
+                                                       , PhysicalDeviceGlobalPriorityQueryFeaturesKHR(..)
+                                                       , QueueFamilyGlobalPriorityPropertiesKHR(..)
+                                                       , QueueGlobalPriorityKHR(..)
+                                                       , MAX_GLOBAL_PRIORITY_SIZE_KHR
+                                                       , pattern MAX_GLOBAL_PRIORITY_SIZE_KHR
                                                        ) where
 
-import Vulkan.CStruct.Utils (FixedArray)
-import Control.Monad (unless)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.IO (throwIO)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Data.Vector (Vector)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.APIConstants (MAX_GLOBAL_PRIORITY_SIZE_EXT)
-import Vulkan.Extensions.VK_EXT_global_priority (QueueGlobalPriorityEXT)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE_EXT)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT))
-import Vulkan.Core10.APIConstants (MAX_GLOBAL_PRIORITY_SIZE_EXT)
-import Vulkan.Extensions.VK_EXT_global_priority (QueueGlobalPriorityEXT(..))
-import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE_EXT)
--- | VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT - Structure describing
--- whether global priority query can be supported by an implementation
---
--- = Members
---
--- The members of the 'PhysicalDeviceGlobalPriorityQueryFeaturesEXT'
--- structure describe the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceGlobalPriorityQueryFeaturesEXT' 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. 'PhysicalDeviceGlobalPriorityQueryFeaturesEXT' /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_global_priority_query VK_EXT_global_priority_query>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-  { -- | #features-globalPriorityQuery# @globalPriorityQuery@ indicates whether
-    -- the implementation supports the ability to query global queue
-    -- priorities.
-    globalPriorityQuery :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceGlobalPriorityQueryFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceGlobalPriorityQueryFeaturesEXT
+import Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
+import Vulkan.Extensions.VK_KHR_global_priority (QueueFamilyGlobalPriorityPropertiesKHR)
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE_KHR)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR))
+import Vulkan.Core10.APIConstants (MAX_GLOBAL_PRIORITY_SIZE_KHR)
+import Vulkan.Extensions.VK_KHR_global_priority (PhysicalDeviceGlobalPriorityQueryFeaturesKHR(..))
+import Vulkan.Extensions.VK_KHR_global_priority (QueueFamilyGlobalPriorityPropertiesKHR(..))
+import Vulkan.Extensions.VK_KHR_global_priority (QueueGlobalPriorityKHR(..))
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE_KHR)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR
 
-instance ToCStruct PhysicalDeviceGlobalPriorityQueryFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceGlobalPriorityQueryFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (globalPriorityQuery))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceGlobalPriorityQueryFeaturesEXT where
-  peekCStruct p = do
-    globalPriorityQuery <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-             (bool32ToBool globalPriorityQuery)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR
 
-instance Storable PhysicalDeviceGlobalPriorityQueryFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceGlobalPriorityQueryFeaturesEXT where
-  zero = PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VK_MAX_GLOBAL_PRIORITY_SIZE_EXT"
+pattern MAX_GLOBAL_PRIORITY_SIZE_EXT = MAX_GLOBAL_PRIORITY_SIZE_KHR
 
 
--- | VkQueueFamilyGlobalPriorityPropertiesEXT - Return structure for queue
--- family global priority information query
---
--- = Description
---
--- The valid elements of @priorities@ /must/ not contain any duplicate
--- values.
---
--- The valid elements of @priorities@ /must/ be a continuous sequence of
--- 'Vulkan.Extensions.VK_EXT_global_priority.QueueGlobalPriorityEXT' enums
--- in the ascending order.
---
--- Note
---
--- For example, returning @priorityCount@ as 3 with supported @priorities@
--- as
--- 'Vulkan.Extensions.VK_EXT_global_priority.QUEUE_GLOBAL_PRIORITY_LOW_EXT',
--- 'Vulkan.Extensions.VK_EXT_global_priority.QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'
--- and
--- 'Vulkan.Extensions.VK_EXT_global_priority.QUEUE_GLOBAL_PRIORITY_REALTIME_EXT'
--- is not allowed.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkQueueFamilyGlobalPriorityPropertiesEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT'
---
--- -   #VUID-VkQueueFamilyGlobalPriorityPropertiesEXT-priorities-parameter#
---     Any given element of @priorities@ /must/ be a valid
---     'Vulkan.Extensions.VK_EXT_global_priority.QueueGlobalPriorityEXT'
---     value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority_query VK_EXT_global_priority_query>,
--- 'Vulkan.Extensions.VK_EXT_global_priority.QueueGlobalPriorityEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityPropertiesEXT
-  { -- | @priorityCount@ is the number of supported global queue priorities in
-    -- this queue family, and it /must/ be greater than 0.
-    priorityCount :: Word32
-  , -- | @priorities@ is an array of
-    -- 'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_EXT'
-    -- 'Vulkan.Extensions.VK_EXT_global_priority.QueueGlobalPriorityEXT' enums
-    -- representing all supported global queue priorities in this queue family.
-    -- The first @priorityCount@ elements of the array will be valid.
-    priorities :: Vector QueueGlobalPriorityEXT
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (QueueFamilyGlobalPriorityPropertiesEXT)
-#endif
-deriving instance Show QueueFamilyGlobalPriorityPropertiesEXT
+-- No documentation found for TopLevel "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT"
+type PhysicalDeviceGlobalPriorityQueryFeaturesEXT = PhysicalDeviceGlobalPriorityQueryFeaturesKHR
 
-instance ToCStruct QueueFamilyGlobalPriorityPropertiesEXT where
-  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p QueueFamilyGlobalPriorityPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (priorityCount)
-    unless ((Data.Vector.length $ (priorities)) <= MAX_GLOBAL_PRIORITY_SIZE_EXT) $
-      throwIO $ IOError Nothing InvalidArgument "" "priorities is too long, a maximum of MAX_GLOBAL_PRIORITY_SIZE_EXT elements are allowed" Nothing Nothing
-    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_GLOBAL_PRIORITY_SIZE_EXT QueueGlobalPriorityEXT)))) `plusPtr` (4 * (i)) :: Ptr QueueGlobalPriorityEXT) (e)) (priorities)
-    f
-  cStructSize = 88
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
 
-instance FromCStruct QueueFamilyGlobalPriorityPropertiesEXT where
-  peekCStruct p = do
-    priorityCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    priorities <- generateM (MAX_GLOBAL_PRIORITY_SIZE_EXT) (\i -> peek @QueueGlobalPriorityEXT (((lowerArrayPtr @QueueGlobalPriorityEXT ((p `plusPtr` 20 :: Ptr (FixedArray MAX_GLOBAL_PRIORITY_SIZE_EXT QueueGlobalPriorityEXT)))) `advancePtrBytes` (4 * (i)) :: Ptr QueueGlobalPriorityEXT)))
-    pure $ QueueFamilyGlobalPriorityPropertiesEXT
-             priorityCount priorities
-
-instance Storable QueueFamilyGlobalPriorityPropertiesEXT where
-  sizeOf ~_ = 88
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero QueueFamilyGlobalPriorityPropertiesEXT where
-  zero = QueueFamilyGlobalPriorityPropertiesEXT
-           zero
-           mempty
+-- No documentation found for TopLevel "VkQueueFamilyGlobalPriorityPropertiesEXT"
+type QueueFamilyGlobalPriorityPropertiesEXT = QueueFamilyGlobalPriorityPropertiesKHR
 
 
 type EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs-boot b/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_global_priority_query.hs-boot
+++ /dev/null
@@ -1,142 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_global_priority_query - device extension
---
--- == VK_EXT_global_priority_query
---
--- [__Name String__]
---     @VK_EXT_global_priority_query@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     389
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_EXT_global_priority@
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Yiwei Zhang
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_global_priority_query] @zhangyiwei%0A<<Here describe the issue or question you have about the VK_EXT_global_priority_query extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2021-03-29
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Yiwei Zhang, Google
---
--- == Description
---
--- This device extension allows applications to query the global queue
--- priorities supported by a queue family. It allows implementations to
--- report which global priority levels are treated differently by the
--- implementation, instead of silently mapping multiple requested global
--- priority levels to the same internal priority, or using device creation
--- failure to signal that a requested priority is not supported. It is
--- intended primarily for use by system integration along with certain
--- platform-specific priority enforcement rules.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceGlobalPriorityQueryFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
---
---     -   'QueueFamilyGlobalPriorityPropertiesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME'
---
--- -   'EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION'
---
--- -   'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT'
---
--- == Issues
---
--- 1) Can we additionally query whether a caller is permitted to acquire a
--- specific global queue priority in this extension?
---
--- __RESOLVED__: No. Whether a caller has enough privilege goes with the
--- OS, and the Vulkan driver cannot really guarantee that the privilege
--- will not change in between this query and the actual queue creation
--- call.
---
--- 2) If more than 1 queue using global priority is requested, is there a
--- good way to know which queue is failing the device creation?
---
--- __RESOLVED__: No. There is not a good way at this moment, and it is also
--- not quite actionable for the applications to know that because the
--- information may not be accurate. Queue creation can fail because of
--- runtime constraints like insufficient privilege or lack of resource, and
--- the failure is not necessarily tied to that particular queue
--- configuration requested.
---
--- == Version History
---
--- -   Revision 1, 2021-03-29 (Yiwei Zhang)
---
--- == See Also
---
--- 'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_EXT',
--- 'PhysicalDeviceGlobalPriorityQueryFeaturesEXT',
--- 'QueueFamilyGlobalPriorityPropertiesEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority_query 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_global_priority_query  ( PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-                                                       , QueueFamilyGlobalPriorityPropertiesEXT
-                                                       ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-
-instance ToCStruct PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-instance Show PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-
-instance FromCStruct PhysicalDeviceGlobalPriorityQueryFeaturesEXT
-
-
-data QueueFamilyGlobalPriorityPropertiesEXT
-
-instance ToCStruct QueueFamilyGlobalPriorityPropertiesEXT
-instance Show QueueFamilyGlobalPriorityPropertiesEXT
-
-instance FromCStruct QueueFamilyGlobalPriorityPropertiesEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs b/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs
--- a/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs
+++ b/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs-boot b/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_hdr_metadata.hs-boot
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_hdr_metadata Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_headless_surface.hs b/src/Vulkan/Extensions/VK_EXT_headless_surface.hs
--- a/src/Vulkan/Extensions/VK_EXT_headless_surface.hs
+++ b/src/Vulkan/Extensions/VK_EXT_headless_surface.hs
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -226,7 +226,7 @@
                             HeadlessSurfaceCreateInfoEXT
                          -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                             -- surface object when there is no more specific allocator available (see
-                            -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                            -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                             ("allocator" ::: Maybe AllocationCallbacks)
                          -> io (SurfaceKHR)
 createHeadlessSurfaceEXT instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_EXT_headless_surface.hs-boot b/src/Vulkan/Extensions/VK_EXT_headless_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_headless_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_headless_surface.hs-boot
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_headless_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_host_query_reset.hs b/src/Vulkan/Extensions/VK_EXT_host_query_reset.hs
--- a/src/Vulkan/Extensions/VK_EXT_host_query_reset.hs
+++ b/src/Vulkan/Extensions/VK_EXT_host_query_reset.hs
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_host_query_reset Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_host_query_reset Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs
@@ -67,9 +67,9 @@
 -- graphics, video, and display APIs.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
 -- and
--- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^.
+-- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^.
 -- Unlike the EGL extensions, this extension does not require the use of a
 -- specific handle type (such as a dma_buf) for external memory and
 -- provides more explicit control of image creation.
@@ -250,33 +250,33 @@
 -- == Prior Art
 --
 -- Extension
--- @EGL_EXT_image_dma_buf_import@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^
+-- @EGL_EXT_image_dma_buf_import@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^
 -- introduced the ability to create an @EGLImage@ by importing for each
 -- plane a dma_buf, offset, and row pitch.
 --
 -- Later, extension
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
 -- introduced the ability to query which combination of formats and
 -- /modifiers/ the implementation supports and to specify /modifiers/
 -- during creation of the @EGLImage@.
 --
 -- Extension
--- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^
+-- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^
 -- is the inverse of @EGL_EXT_image_dma_buf_import_modifiers@.
 --
 -- The Linux kernel modesetting API (KMS), when configuring the display’s
 -- framebuffer with @struct
--- drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- allows one to specify the frambuffer’s /modifier/ as well as a per-plane
 -- memory handle, offset, and row pitch.
 --
 -- GBM, a graphics buffer manager for Linux, allows creation of a @gbm_bo@
 -- (that is, a graphics /buffer object/) by importing data similar to that
 -- in
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^;
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^;
 -- and symmetrically allows exporting the same data from the @gbm_bo@. See
 -- the references to /modifier/ and /plane/ in
--- @gbm.h@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
+-- @gbm.h@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
 --
 -- == New Commands
 --
@@ -371,10 +371,10 @@
 -- 'Vulkan.Core10.Handles.Image'.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and @struct
--- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
 -- allows defining one /modifier/ per plane. However, developers of the GBM
 -- and kernel APIs concede it was a mistake. Beginning in Linux 4.10, the
 -- kernel requires that the application provide the same DRM format
@@ -397,10 +397,10 @@
 -- /must/ be 0.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and @struct
--- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
 -- omits from the API the size of each plane. Instead, the APIs infer each
 -- plane’s size from the import parameters, which include the image’s pixel
 -- format and a dma_buf, offset, and row pitch for each plane.
@@ -545,7 +545,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -562,9 +562,6 @@
                                                            , pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION
                                                            , EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME
                                                            , pattern EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME
-                                                           , FormatFeatureFlagBits2KHR(..)
-                                                           , FormatFeatureFlags2KHR
-                                                           , Flags64
                                                            ) where
 
 import Vulkan.Internal.Utils (traceAroundEvent)
@@ -610,7 +607,7 @@
 import Vulkan.Dynamic (DeviceCmds(pVkGetImageDrmFormatModifierPropertiesEXT))
 import Vulkan.Core10.Handles (Device_T)
 import Vulkan.Core10.Enums.FormatFeatureFlagBits (FormatFeatureFlags)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
 import Vulkan.Core10.Handles (Image)
 import Vulkan.Core10.Handles (Image(..))
 import Vulkan.Core10.Enums.Result (Result)
@@ -626,9 +623,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -771,7 +765,7 @@
 -- An image’s /memory planecount/ (as returned by
 -- @drmFormatModifierPlaneCount@) is distinct from its /format planecount/
 -- (in the sense of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar>
 -- Y′CBCR formats). In
 -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlags', each
 -- @VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT@ represents a /memory plane/ and
@@ -798,7 +792,7 @@
 -- not necessarily contiguous.
 --
 -- If an image is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource linear>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource linear>,
 -- then the partition is the same for /memory planes/ and for /format
 -- planes/. Therefore, if the returned @drmFormatModifier@ is
 -- @DRM_FORMAT_MOD_LINEAR@, then @drmFormatModifierPlaneCount@ /must/ equal
@@ -808,7 +802,7 @@
 -- returned in the same @pNext@ chain.
 --
 -- If an image is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-linear-resource non-linear>,
 -- then the partition of the image’s __memory__ into /memory planes/ is
 -- implementation-specific and /may/ be unrelated to the partition of the
 -- image’s __content__ into /format planes/. For example, consider an image
@@ -1217,7 +1211,7 @@
 -- 'getImageDrmFormatModifierPropertiesEXT'
 data ImageDrmFormatModifierPropertiesEXT = ImageDrmFormatModifierPropertiesEXT
   { -- | @drmFormatModifier@ returns the image’s
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary-drm-format-modifier Linux DRM format modifier>.
     drmFormatModifier :: Word64 }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -1342,7 +1336,7 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier VK_EXT_image_drm_format_modifier>,
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>,
 -- 'DrmFormatModifierPropertiesList2EXT',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR'
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlags2'
 data DrmFormatModifierProperties2EXT = DrmFormatModifierProperties2EXT
   { -- | @drmFormatModifier@ is a /Linux DRM format modifier/.
     drmFormatModifier :: Word64
@@ -1352,10 +1346,10 @@
     -- below.
     drmFormatModifierPlaneCount :: Word32
   , -- | @drmFormatModifierTilingFeatures@ is a bitmask of
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
-    -- that are supported by any image created with @format@ and
+    -- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2' that
+    -- are supported by any image created with @format@ and
     -- @drmFormatModifier@.
-    drmFormatModifierTilingFeatures :: FormatFeatureFlags2KHR
+    drmFormatModifierTilingFeatures :: FormatFeatureFlags2
   }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -1368,21 +1362,21 @@
   pokeCStruct p DrmFormatModifierProperties2EXT{..} f = do
     poke ((p `plusPtr` 0 :: Ptr Word64)) (drmFormatModifier)
     poke ((p `plusPtr` 8 :: Ptr Word32)) (drmFormatModifierPlaneCount)
-    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2KHR)) (drmFormatModifierTilingFeatures)
+    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2)) (drmFormatModifierTilingFeatures)
     f
   cStructSize = 24
   cStructAlignment = 8
   pokeZeroCStruct p f = do
     poke ((p `plusPtr` 0 :: Ptr Word64)) (zero)
     poke ((p `plusPtr` 8 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2KHR)) (zero)
+    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2)) (zero)
     f
 
 instance FromCStruct DrmFormatModifierProperties2EXT where
   peekCStruct p = do
     drmFormatModifier <- peek @Word64 ((p `plusPtr` 0 :: Ptr Word64))
     drmFormatModifierPlaneCount <- peek @Word32 ((p `plusPtr` 8 :: Ptr Word32))
-    drmFormatModifierTilingFeatures <- peek @FormatFeatureFlags2KHR ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2KHR))
+    drmFormatModifierTilingFeatures <- peek @FormatFeatureFlags2 ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2))
     pure $ DrmFormatModifierProperties2EXT
              drmFormatModifier drmFormatModifierPlaneCount drmFormatModifierTilingFeatures
 
diff --git a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_image_drm_format_modifier.hs-boot
@@ -67,9 +67,9 @@
 -- graphics, video, and display APIs.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
 -- and
--- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^.
+-- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^.
 -- Unlike the EGL extensions, this extension does not require the use of a
 -- specific handle type (such as a dma_buf) for external memory and
 -- provides more explicit control of image creation.
@@ -250,33 +250,33 @@
 -- == Prior Art
 --
 -- Extension
--- @EGL_EXT_image_dma_buf_import@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^
+-- @EGL_EXT_image_dma_buf_import@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^
 -- introduced the ability to create an @EGLImage@ by importing for each
 -- plane a dma_buf, offset, and row pitch.
 --
 -- Later, extension
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^
 -- introduced the ability to query which combination of formats and
 -- /modifiers/ the implementation supports and to specify /modifiers/
 -- during creation of the @EGLImage@.
 --
 -- Extension
--- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^
+-- @EGL_MESA_image_dma_buf_export@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn3 3>^
 -- is the inverse of @EGL_EXT_image_dma_buf_import_modifiers@.
 --
 -- The Linux kernel modesetting API (KMS), when configuring the display’s
 -- framebuffer with @struct
--- drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- allows one to specify the frambuffer’s /modifier/ as well as a per-plane
 -- memory handle, offset, and row pitch.
 --
 -- GBM, a graphics buffer manager for Linux, allows creation of a @gbm_bo@
 -- (that is, a graphics /buffer object/) by importing data similar to that
 -- in
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^;
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn1 1>^;
 -- and symmetrically allows exporting the same data from the @gbm_bo@. See
 -- the references to /modifier/ and /plane/ in
--- @gbm.h@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
+-- @gbm.h@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^.
 --
 -- == New Commands
 --
@@ -371,10 +371,10 @@
 -- 'Vulkan.Core10.Handles.Image'.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and @struct
--- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
 -- allows defining one /modifier/ per plane. However, developers of the GBM
 -- and kernel APIs concede it was a mistake. Beginning in Linux 4.10, the
 -- kernel requires that the application provide the same DRM format
@@ -397,10 +397,10 @@
 -- /must/ be 0.
 --
 -- __DISCUSSION__: Prior art, such as
--- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
--- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
+-- @EGL_EXT_image_dma_buf_import_modifiers@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn2 2>^,
+-- @struct drm_mode_fb_cmd2@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn4 4>^,
 -- and @struct
--- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
+-- gbm_import_fd_modifier_data@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier-fn5 5>^,
 -- omits from the API the size of each plane. Instead, the APIs infer each
 -- plane’s size from the import parameters, which include the image’s pixel
 -- format and a dma_buf, offset, and row pitch for each plane.
@@ -545,7 +545,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_drm_format_modifier Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_image_robustness.hs b/src/Vulkan/Extensions/VK_EXT_image_robustness.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_robustness.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_robustness.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Graeme Leese
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2020-04-27
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -57,7 +66,7 @@
 -- out of bounds reads return R, G, and B values of zero and alpha values
 -- of either zero or one. Components not present in the image format may be
 -- set to zero or to values based on the format as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>.
 --
 -- == New Structures
 --
@@ -75,8 +84,14 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Issues
 --
 -- 1.  How does this extension differ from VK_EXT_robustness2?
@@ -105,112 +120,27 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_robustness Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_robustness 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_image_robustness  ( PhysicalDeviceImageRobustnessFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_image_robustness  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT
+                                                  , PhysicalDeviceImageRobustnessFeaturesEXT
                                                   , EXT_IMAGE_ROBUSTNESS_SPEC_VERSION
                                                   , pattern EXT_IMAGE_ROBUSTNESS_SPEC_VERSION
                                                   , EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME
                                                   , pattern EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME
                                                   ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT))
--- | VkPhysicalDeviceImageRobustnessFeaturesEXT - Structure describing the
--- out-of-bounds behavior for an implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceImageRobustnessFeaturesEXT' 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. 'PhysicalDeviceImageRobustnessFeaturesEXT' /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_image_robustness VK_EXT_image_robustness>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeaturesEXT
-  { -- | #features-robustImageAccess# @robustImageAccess@ indicates whether image
-    -- accesses are tightly bounds-checked against the dimensions of the image
-    -- view.
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-input-validation Invalid texels>
-    -- resulting from out of bounds image loads will be replaced as described
-    -- in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-texel-replacement Texel Replacement>,
-    -- with either (0,0,1) or (0,0,0) values inserted for missing G, B, or A
-    -- components based on the format.
-    robustImageAccess :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceImageRobustnessFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceImageRobustnessFeaturesEXT
+import Vulkan.Core13.Promoted_From_VK_EXT_image_robustness (PhysicalDeviceImageRobustnessFeatures)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES
 
-instance ToCStruct PhysicalDeviceImageRobustnessFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceImageRobustnessFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (robustImageAccess))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceImageRobustnessFeaturesEXT where
-  peekCStruct p = do
-    robustImageAccess <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceImageRobustnessFeaturesEXT
-             (bool32ToBool robustImageAccess)
-
-instance Storable PhysicalDeviceImageRobustnessFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceImageRobustnessFeaturesEXT where
-  zero = PhysicalDeviceImageRobustnessFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceImageRobustnessFeaturesEXT"
+type PhysicalDeviceImageRobustnessFeaturesEXT = PhysicalDeviceImageRobustnessFeatures
 
 
 type EXT_IMAGE_ROBUSTNESS_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_image_robustness.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_robustness.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_image_robustness.hs-boot
+++ /dev/null
@@ -1,124 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_image_robustness - device extension
---
--- == VK_EXT_image_robustness
---
--- [__Name String__]
---     @VK_EXT_image_robustness@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     336
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Graeme Leese
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_image_robustness] @gnl21%0A<<Here describe the issue or question you have about the VK_EXT_image_robustness extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-04-27
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Graeme Leese, Broadcom
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Spencer Fricke, Samsung
---
---     -   Courtney Goeltzenleuchter, Google
---
---     -   Slawomir Cygan, Intel
---
--- == Description
---
--- This extension adds stricter requirements for how out of bounds reads
--- from images are handled. Rather than returning undefined values, most
--- out of bounds reads return R, G, and B values of zero and alpha values
--- of either zero or one. Components not present in the image format may be
--- set to zero or to values based on the format as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceImageRobustnessFeaturesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME'
---
--- -   'EXT_IMAGE_ROBUSTNESS_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT'
---
--- == Issues
---
--- 1.  How does this extension differ from VK_EXT_robustness2?
---
--- The guarantees provided by this extension are a subset of those provided
--- by the robustImageAccess2 feature of VK_EXT_robustness2. Where this
--- extension allows return values of (0, 0, 0, 0) or (0, 0, 0, 1),
--- robustImageAccess2 requires that a particular value dependent on the
--- image format be returned. This extension provides no guarantees about
--- the values returned for an access to an invalid Lod.
---
--- == Examples
---
--- None.
---
--- == Version History
---
--- -   Revision 1, 2020-04-27 (Graeme Leese)
---
---     -   Initial draft
---
--- == See Also
---
--- 'PhysicalDeviceImageRobustnessFeaturesEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_robustness 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_image_robustness  (PhysicalDeviceImageRobustnessFeaturesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceImageRobustnessFeaturesEXT
-
-instance ToCStruct PhysicalDeviceImageRobustnessFeaturesEXT
-instance Show PhysicalDeviceImageRobustnessFeaturesEXT
-
-instance FromCStruct PhysicalDeviceImageRobustnessFeaturesEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs b/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs
--- a/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs
+++ b/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs
@@ -53,9 +53,9 @@
 -- == Description
 --
 -- This extension allows applications to clamp the minimum LOD value during
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
 -- with a given 'Vulkan.Core10.Handles.ImageView' by
 -- 'ImageViewMinLodCreateInfoEXT'::@minLod@.
 --
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_view_min_lod Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_view_min_lod Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -171,9 +171,9 @@
 data PhysicalDeviceImageViewMinLodFeaturesEXT = PhysicalDeviceImageViewMinLodFeaturesEXT
   { -- | #features-minLod# @minLod@ indicates whether the implementation supports
     -- clamping the minimum LOD value during
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
     -- with a given 'Vulkan.Core10.Handles.ImageView' by
     -- 'ImageViewMinLodCreateInfoEXT'::@minLod@.
     minLod :: Bool }
@@ -221,7 +221,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-VkImageViewMinLodCreateInfoEXT-minLod-06455# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-minLod minLod>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-minLod minLod>
 --     feature is not enabled, @minLod@ /must/ be @0.0@.
 --
 -- -   #VUID-VkImageViewMinLodCreateInfoEXT-minLod-06456# @minLod@ /must/
diff --git a/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs-boot b/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_image_view_min_lod.hs-boot
@@ -53,9 +53,9 @@
 -- == Description
 --
 -- This extension allows applications to clamp the minimum LOD value during
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-image-level-selection Image Level(s) Selection>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-integer-coordinate-operations Integer Texel Coordinate Operations>
 -- with a given 'Vulkan.Core10.Handles.ImageView' by
 -- 'ImageViewMinLodCreateInfoEXT'::@minLod@.
 --
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_image_view_min_lod Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_image_view_min_lod Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
--- a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
+++ b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs
@@ -78,7 +78,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_index_type_uint8 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_index_type_uint8 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs-boot b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_index_type_uint8.hs-boot
@@ -78,7 +78,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_index_type_uint8 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_index_type_uint8 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
--- a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
+++ b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs
@@ -25,6 +25,11 @@
 --
 --     -   Requires @VK_KHR_maintenance1@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Daniel Rakos
@@ -35,6 +40,10 @@
 -- [__Last Modified Date__]
 --     2018-08-01
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -86,18 +95,30 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
 --
---     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     -   'DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT'
+--     -   'STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
+-- Vulkan 1.3 adds
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#versions-1.3-new-features additional functionality related to this extension>
+-- in the form of the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInlineUniformTotalSize maxInlineUniformTotalSize>
+-- limit.
+--
 -- == Issues
 --
 -- 1) Do we need a new storage class for inline uniform blocks vs uniform
@@ -170,356 +191,69 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_inline_uniform_block 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_inline_uniform_block  ( PhysicalDeviceInlineUniformBlockFeaturesEXT(..)
-                                                      , PhysicalDeviceInlineUniformBlockPropertiesEXT(..)
-                                                      , WriteDescriptorSetInlineUniformBlockEXT(..)
-                                                      , DescriptorPoolInlineUniformBlockCreateInfoEXT(..)
+module Vulkan.Extensions.VK_EXT_inline_uniform_block  ( pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
+                                                      , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT
+                                                      , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT
+                                                      , pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT
+                                                      , pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT
+                                                      , PhysicalDeviceInlineUniformBlockFeaturesEXT
+                                                      , PhysicalDeviceInlineUniformBlockPropertiesEXT
+                                                      , WriteDescriptorSetInlineUniformBlockEXT
+                                                      , DescriptorPoolInlineUniformBlockCreateInfoEXT
                                                       , EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION
                                                       , pattern EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION
                                                       , EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME
                                                       , pattern EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME
                                                       ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT))
--- | VkPhysicalDeviceInlineUniformBlockFeaturesEXT - Structure describing
--- inline uniform block features that can be supported by an implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceInlineUniformBlockFeaturesEXT' 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. 'PhysicalDeviceInlineUniformBlockFeaturesEXT' /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_inline_uniform_block VK_EXT_inline_uniform_block>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeaturesEXT
-  { -- | #features-inlineUniformBlock# @inlineUniformBlock@ indicates whether the
-    -- implementation supports inline uniform block descriptors. If this
-    -- feature is not enabled,
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
-    -- /must/ not be used.
-    inlineUniformBlock :: Bool
-  , -- | #features-descriptorBindingInlineUniformBlockUpdateAfterBind#
-    -- @descriptorBindingInlineUniformBlockUpdateAfterBind@ indicates whether
-    -- the implementation supports updating inline uniform block descriptors
-    -- after a set is bound. If this feature is not enabled,
-    -- 'Vulkan.Core12.Enums.DescriptorBindingFlagBits.DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT'
-    -- /must/ not be used with
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'.
-    descriptorBindingInlineUniformBlockUpdateAfterBind :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceInlineUniformBlockFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceInlineUniformBlockFeaturesEXT
+import Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (DescriptorPoolInlineUniformBlockCreateInfo)
+import Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockFeatures)
+import Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (PhysicalDeviceInlineUniformBlockProperties)
+import Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block (WriteDescriptorSetInlineUniformBlock)
+import Vulkan.Core10.Enums.DescriptorType (DescriptorType(DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK))
+-- No documentation found for TopLevel "VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT"
+pattern DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
 
-instance ToCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceInlineUniformBlockFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (inlineUniformBlock))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (descriptorBindingInlineUniformBlockUpdateAfterBind))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT where
-  peekCStruct p = do
-    inlineUniformBlock <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    descriptorBindingInlineUniformBlockUpdateAfterBind <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceInlineUniformBlockFeaturesEXT
-             (bool32ToBool inlineUniformBlock) (bool32ToBool descriptorBindingInlineUniformBlockUpdateAfterBind)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES
 
-instance Storable PhysicalDeviceInlineUniformBlockFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceInlineUniformBlockFeaturesEXT where
-  zero = PhysicalDeviceInlineUniformBlockFeaturesEXT
-           zero
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES
 
 
--- | VkPhysicalDeviceInlineUniformBlockPropertiesEXT - Structure describing
--- inline uniform block properties that can be supported by an
--- implementation
---
--- = Description
---
--- If the 'PhysicalDeviceInlineUniformBlockPropertiesEXT' 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_inline_uniform_block VK_EXT_inline_uniform_block>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockPropertiesEXT
-  { -- | #limits-maxInlineUniformBlockSize# @maxInlineUniformBlockSize@ is the
-    -- maximum size in bytes of an
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-inlineuniformblock inline uniform block>
-    -- binding.
-    maxInlineUniformBlockSize :: Word32
-  , -- No documentation found for Nested "VkPhysicalDeviceInlineUniformBlockPropertiesEXT" "maxPerStageDescriptorInlineUniformBlocks"
-    maxPerStageDescriptorInlineUniformBlocks :: Word32
-  , -- | #limits-maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks#
-    -- @maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks@ is similar to
-    -- @maxPerStageDescriptorInlineUniformBlocks@ but counts descriptor
-    -- bindings from descriptor sets created with or without the
-    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
-    -- bit set.
-    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks :: Word32
-  , -- | #limits-maxDescriptorSetInlineUniformBlocks#
-    -- @maxDescriptorSetInlineUniformBlocks@ is the maximum number of inline
-    -- uniform block bindings that /can/ be included in descriptor bindings in
-    -- a pipeline layout across all pipeline shader stages and descriptor set
-    -- numbers. Descriptor bindings with a descriptor type of
-    -- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
-    -- count against this limit. Only descriptor bindings in descriptor set
-    -- layouts created without the
-    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
-    -- bit set count against this limit.
-    maxDescriptorSetInlineUniformBlocks :: Word32
-  , -- | #limits-maxDescriptorSetUpdateAfterBindInlineUniformBlocks#
-    -- @maxDescriptorSetUpdateAfterBindInlineUniformBlocks@ is similar to
-    -- @maxDescriptorSetInlineUniformBlocks@ but counts descriptor bindings
-    -- from descriptor sets created with or without the
-    -- 'Vulkan.Core10.Enums.DescriptorSetLayoutCreateFlagBits.DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT'
-    -- bit set.
-    maxDescriptorSetUpdateAfterBindInlineUniformBlocks :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceInlineUniformBlockPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceInlineUniformBlockPropertiesEXT
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT"
+pattern STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK
 
-instance ToCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceInlineUniformBlockPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxInlineUniformBlockSize)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxPerStageDescriptorInlineUniformBlocks)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (maxDescriptorSetInlineUniformBlocks)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (maxDescriptorSetUpdateAfterBindInlineUniformBlocks)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Word32)) (zero)
-    f
 
-instance FromCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT where
-  peekCStruct p = do
-    maxInlineUniformBlockSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxPerStageDescriptorInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    maxDescriptorSetInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    maxDescriptorSetUpdateAfterBindInlineUniformBlocks <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pure $ PhysicalDeviceInlineUniformBlockPropertiesEXT
-             maxInlineUniformBlockSize maxPerStageDescriptorInlineUniformBlocks maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks maxDescriptorSetInlineUniformBlocks maxDescriptorSetUpdateAfterBindInlineUniformBlocks
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO
 
-instance Storable PhysicalDeviceInlineUniformBlockPropertiesEXT where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceInlineUniformBlockPropertiesEXT where
-  zero = PhysicalDeviceInlineUniformBlockPropertiesEXT
-           zero
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceInlineUniformBlockFeaturesEXT"
+type PhysicalDeviceInlineUniformBlockFeaturesEXT = PhysicalDeviceInlineUniformBlockFeatures
 
 
--- | VkWriteDescriptorSetInlineUniformBlockEXT - Structure specifying inline
--- uniform block data
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block VK_EXT_inline_uniform_block>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlockEXT
-  { -- | @dataSize@ is the number of bytes of inline uniform block data pointed
-    -- to by @pData@.
-    --
-    -- #VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222#
-    -- @dataSize@ /must/ be an integer multiple of @4@
-    --
-    -- #VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength#
-    -- @dataSize@ /must/ be greater than @0@
-    dataSize :: Word32
-  , -- | @pData@ is a pointer to @dataSize@ number of bytes of data to write to
-    -- the inline uniform block.
-    --
-    -- #VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter# @pData@
-    -- /must/ be a valid pointer to an array of @dataSize@ bytes
-    data' :: Ptr ()
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (WriteDescriptorSetInlineUniformBlockEXT)
-#endif
-deriving instance Show WriteDescriptorSetInlineUniformBlockEXT
+-- No documentation found for TopLevel "VkPhysicalDeviceInlineUniformBlockPropertiesEXT"
+type PhysicalDeviceInlineUniformBlockPropertiesEXT = PhysicalDeviceInlineUniformBlockProperties
 
-instance ToCStruct WriteDescriptorSetInlineUniformBlockEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p WriteDescriptorSetInlineUniformBlockEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (dataSize)
-    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (data')
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
-    f
 
-instance FromCStruct WriteDescriptorSetInlineUniformBlockEXT where
-  peekCStruct p = do
-    dataSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pData <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
-    pure $ WriteDescriptorSetInlineUniformBlockEXT
-             dataSize pData
-
-instance Storable WriteDescriptorSetInlineUniformBlockEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero WriteDescriptorSetInlineUniformBlockEXT where
-  zero = WriteDescriptorSetInlineUniformBlockEXT
-           zero
-           zero
+-- No documentation found for TopLevel "VkWriteDescriptorSetInlineUniformBlockEXT"
+type WriteDescriptorSetInlineUniformBlockEXT = WriteDescriptorSetInlineUniformBlock
 
 
--- | VkDescriptorPoolInlineUniformBlockCreateInfoEXT - Structure specifying
--- the maximum number of inline uniform block bindings of a newly created
--- descriptor pool
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block VK_EXT_inline_uniform_block>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfoEXT
-  { -- | @maxInlineUniformBlockBindings@ is the number of inline uniform block
-    -- bindings to allocate.
-    maxInlineUniformBlockBindings :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DescriptorPoolInlineUniformBlockCreateInfoEXT)
-#endif
-deriving instance Show DescriptorPoolInlineUniformBlockCreateInfoEXT
-
-instance ToCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DescriptorPoolInlineUniformBlockCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (maxInlineUniformBlockBindings)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT where
-  peekCStruct p = do
-    maxInlineUniformBlockBindings <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pure $ DescriptorPoolInlineUniformBlockCreateInfoEXT
-             maxInlineUniformBlockBindings
-
-instance Storable DescriptorPoolInlineUniformBlockCreateInfoEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero DescriptorPoolInlineUniformBlockCreateInfoEXT where
-  zero = DescriptorPoolInlineUniformBlockCreateInfoEXT
-           zero
+-- No documentation found for TopLevel "VkDescriptorPoolInlineUniformBlockCreateInfoEXT"
+type DescriptorPoolInlineUniformBlockCreateInfoEXT = DescriptorPoolInlineUniformBlockCreateInfo
 
 
 type EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot b/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_inline_uniform_block.hs-boot
+++ /dev/null
@@ -1,217 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_inline_uniform_block - device extension
---
--- == VK_EXT_inline_uniform_block
---
--- [__Name String__]
---     @VK_EXT_inline_uniform_block@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     139
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
---     -   Requires @VK_KHR_maintenance1@
---
--- [__Contact__]
---
---     -   Daniel Rakos
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_inline_uniform_block] @aqnuep%0A<<Here describe the issue or question you have about the VK_EXT_inline_uniform_block extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2018-08-01
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Daniel Rakos, AMD
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Slawomir Grajewski, Intel
---
---     -   Neil Henning, Codeplay
---
--- == Description
---
--- This extension introduces the ability to back uniform blocks directly
--- with descriptor sets by storing inline uniform data within descriptor
--- pool storage. Compared to push constants this new construct allows
--- uniform data to be reused across multiple disjoint sets of drawing or
--- dispatching commands and /may/ enable uniform data to be accessed with
--- fewer indirections compared to uniforms backed by buffer memory.
---
--- == New Structures
---
--- -   Extending 'Vulkan.Core10.DescriptorSet.DescriptorPoolCreateInfo':
---
---     -   'DescriptorPoolInlineUniformBlockCreateInfoEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceInlineUniformBlockFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceInlineUniformBlockPropertiesEXT'
---
--- -   Extending 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet':
---
---     -   'WriteDescriptorSetInlineUniformBlockEXT'
---
--- == New Enum Constants
---
--- -   'EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME'
---
--- -   'EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.DescriptorType.DescriptorType':
---
---     -   'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT'
---
--- == Issues
---
--- 1) Do we need a new storage class for inline uniform blocks vs uniform
--- blocks?
---
--- __RESOLVED__: No. The @Uniform@ storage class is used to allow the same
--- syntax used for both uniform buffers and inline uniform blocks.
---
--- 2) Is the descriptor array index and array size expressed in terms of
--- bytes or dwords for inline uniform block descriptors?
---
--- __RESOLVED__: In bytes, but both /must/ be a multiple of 4, similar to
--- how push constant ranges are specified. The @descriptorCount@ of
--- 'Vulkan.Core10.DescriptorSet.DescriptorSetLayoutBinding' thus provides
--- the total number of bytes a particular binding with an inline uniform
--- block descriptor type can hold, while the @srcArrayElement@,
--- @dstArrayElement@, and @descriptorCount@ members of
--- 'Vulkan.Core10.DescriptorSet.WriteDescriptorSet',
--- 'Vulkan.Core10.DescriptorSet.CopyDescriptorSet', and
--- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry'
--- (where applicable) specify the byte offset and number of bytes to
--- write\/copy to the binding’s backing store. Additionally, the @stride@
--- member of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_descriptor_update_template.DescriptorUpdateTemplateEntry'
--- is ignored for inline uniform blocks and a default value of one is used,
--- meaning that the data to update inline uniform block bindings with must
--- be contiguous in memory.
---
--- 3) What layout rules apply for uniform blocks corresponding to inline
--- constants?
---
--- __RESOLVED__: They use the same layout rules as uniform buffers.
---
--- 4) Do we need to add non-uniform indexing features\/properties as
--- introduced by @VK_EXT_descriptor_indexing@ for inline uniform blocks?
---
--- __RESOLVED__: No, because inline uniform blocks are not allowed to be
--- “arrayed”. A single binding with an inline uniform block descriptor type
--- corresponds to a single uniform block instance and the array indices
--- inside that binding refer to individual offsets within the uniform block
--- (see issue #2). However, this extension does introduce new
--- features\/properties about the level of support for update-after-bind
--- inline uniform blocks.
---
--- 5) Is the @descriptorBindingVariableDescriptorCount@ feature introduced
--- by @VK_EXT_descriptor_indexing@ supported for inline uniform blocks?
---
--- __RESOLVED__: Yes, as long as other inline uniform block specific limits
--- are respected.
---
--- 6) Do the robustness guarantees of @robustBufferAccess@ apply to inline
--- uniform block accesses?
---
--- __RESOLVED__: No, similarly to push constants, as they are not backed by
--- buffer memory like uniform buffers.
---
--- == Version History
---
--- -   Revision 1, 2018-08-01 (Daniel Rakos)
---
---     -   Internal revisions
---
--- == See Also
---
--- 'DescriptorPoolInlineUniformBlockCreateInfoEXT',
--- 'PhysicalDeviceInlineUniformBlockFeaturesEXT',
--- 'PhysicalDeviceInlineUniformBlockPropertiesEXT',
--- 'WriteDescriptorSetInlineUniformBlockEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_inline_uniform_block 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_inline_uniform_block  ( DescriptorPoolInlineUniformBlockCreateInfoEXT
-                                                      , PhysicalDeviceInlineUniformBlockFeaturesEXT
-                                                      , PhysicalDeviceInlineUniformBlockPropertiesEXT
-                                                      , WriteDescriptorSetInlineUniformBlockEXT
-                                                      ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data DescriptorPoolInlineUniformBlockCreateInfoEXT
-
-instance ToCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT
-instance Show DescriptorPoolInlineUniformBlockCreateInfoEXT
-
-instance FromCStruct DescriptorPoolInlineUniformBlockCreateInfoEXT
-
-
-data PhysicalDeviceInlineUniformBlockFeaturesEXT
-
-instance ToCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT
-instance Show PhysicalDeviceInlineUniformBlockFeaturesEXT
-
-instance FromCStruct PhysicalDeviceInlineUniformBlockFeaturesEXT
-
-
-data PhysicalDeviceInlineUniformBlockPropertiesEXT
-
-instance ToCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT
-instance Show PhysicalDeviceInlineUniformBlockPropertiesEXT
-
-instance FromCStruct PhysicalDeviceInlineUniformBlockPropertiesEXT
-
-
-data WriteDescriptorSetInlineUniformBlockEXT
-
-instance ToCStruct WriteDescriptorSetInlineUniformBlockEXT
-instance Show WriteDescriptorSetInlineUniformBlockEXT
-
-instance FromCStruct WriteDescriptorSetInlineUniformBlockEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
--- a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
+++ b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -307,19 +307,19 @@
 data PhysicalDeviceLineRasterizationFeaturesEXT = PhysicalDeviceLineRasterizationFeaturesEXT
   { -- | #features-rectangularLines# @rectangularLines@ indicates whether the
     -- implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines rectangular line rasterization>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines rectangular line rasterization>.
     rectangularLines :: Bool
   , -- | #features-bresenhamLines# @bresenhamLines@ indicates whether the
     -- implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham-style line rasterization>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham-style line rasterization>.
     bresenhamLines :: Bool
   , -- | #features-smoothLines# @smoothLines@ indicates whether the
     -- implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smooth smooth line rasterization>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-smooth smooth line rasterization>.
     smoothLines :: Bool
   , -- | #features-stippledRectangularLines# @stippledRectangularLines@ indicates
     -- whether the implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
     -- with 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' lines, or with
     -- 'LINE_RASTERIZATION_MODE_DEFAULT_EXT' lines if
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
@@ -327,12 +327,12 @@
     stippledRectangularLines :: Bool
   , -- | #features-stippledBresenhamLines# @stippledBresenhamLines@ indicates
     -- whether the implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
     -- with 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT' lines.
     stippledBresenhamLines :: Bool
   , -- | #features-stippledSmoothLines# @stippledSmoothLines@ indicates whether
     -- the implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>
     -- with 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT' lines.
     stippledSmoothLines :: Bool
   }
@@ -417,7 +417,7 @@
   { -- | #limits-lineSubPixelPrecisionBits# @lineSubPixelPrecisionBits@ is the
     -- number of bits of subpixel precision in framebuffer coordinates xf and
     -- yf when rasterizing
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines line segments>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines line segments>.
     lineSubPixelPrecisionBits :: Word32 }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -470,47 +470,47 @@
 -- -   #VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768#
 --     If @lineRasterizationMode@ is
 --     'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rectangularLines rectangularLines>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rectangularLines rectangularLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769#
 --     If @lineRasterizationMode@ is
 --     'LINE_RASTERIZATION_MODE_BRESENHAM_EXT', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines bresenhamLines>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bresenhamLines bresenhamLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770#
 --     If @lineRasterizationMode@ is
 --     'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bresenhamLines smoothLines>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bresenhamLines smoothLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771#
 --     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is
 --     'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772#
 --     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT',
 --     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-stippledBresenhamLines stippledBresenhamLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773#
 --     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is
 --     'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-stippledSmoothLines stippledSmoothLines>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774#
 --     If @stippledLineEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE' and
 --     @lineRasterizationMode@ is 'LINE_RASTERIZATION_MODE_DEFAULT_EXT',
 --     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-stippledRectangularLines stippledRectangularLines>
 --     feature /must/ be enabled and
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
 --     /must/ be 'Vulkan.Core10.FundamentalTypes.TRUE'
@@ -535,7 +535,7 @@
     -- the style of line rasterization.
     lineRasterizationMode :: LineRasterizationModeEXT
   , -- | @stippledLineEnable@ enables
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-stipple stippled line rasterization>.
     stippledLineEnable :: Bool
   , -- | @lineStippleFactor@ is the repeat factor used in stippled line
     -- rasterization.
@@ -608,7 +608,7 @@
 -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@strictLines@
 -- is 'Vulkan.Core10.FundamentalTypes.TRUE', otherwise lines are drawn as
 -- non-@strictLines@ parallelograms. Both of these modes are defined in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-basic Basic Line Segment Rasterization>.
 pattern LINE_RASTERIZATION_MODE_DEFAULT_EXT            = LineRasterizationModeEXT 0
 -- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_EXT' specifies lines drawn as if
 -- they were rectangles extruded from the line
@@ -616,12 +616,12 @@
 -- | 'LINE_RASTERIZATION_MODE_BRESENHAM_EXT' specifies lines drawn by
 -- determining which pixel diamonds the line intersects and exits, as
 -- defined in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham Line Segment Rasterization>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-bresenham Bresenham Line Segment Rasterization>.
 pattern LINE_RASTERIZATION_MODE_BRESENHAM_EXT          = LineRasterizationModeEXT 2
 -- | 'LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT' specifies lines drawn
 -- if they were rectangles extruded from the line, with alpha falloff, as
 -- defined in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-lines-smooth Smooth Lines>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-lines-smooth Smooth Lines>.
 pattern LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = LineRasterizationModeEXT 3
 {-# complete LINE_RASTERIZATION_MODE_DEFAULT_EXT,
              LINE_RASTERIZATION_MODE_RECTANGULAR_EXT,
diff --git a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_line_rasterization.hs-boot
@@ -127,7 +127,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_line_rasterization Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_load_store_op_none.hs b/src/Vulkan/Extensions/VK_EXT_load_store_op_none.hs
--- a/src/Vulkan/Extensions/VK_EXT_load_store_op_none.hs
+++ b/src/Vulkan/Extensions/VK_EXT_load_store_op_none.hs
@@ -84,7 +84,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_load_store_op_none Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_load_store_op_none Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -96,9 +96,9 @@
                                                     ) where
 
 import Data.String (IsString)
-import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE_KHR))
+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE))
 -- No documentation found for TopLevel "VK_ATTACHMENT_STORE_OP_NONE_EXT"
-pattern ATTACHMENT_STORE_OP_NONE_EXT = ATTACHMENT_STORE_OP_NONE_KHR
+pattern ATTACHMENT_STORE_OP_NONE_EXT = ATTACHMENT_STORE_OP_NONE
 
 
 type EXT_LOAD_STORE_OP_NONE_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_budget.hs b/src/Vulkan/Extensions/VK_EXT_memory_budget.hs
--- a/src/Vulkan/Extensions/VK_EXT_memory_budget.hs
+++ b/src/Vulkan/Extensions/VK_EXT_memory_budget.hs
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_budget.hs-boot b/src/Vulkan/Extensions/VK_EXT_memory_budget.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_memory_budget.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_memory_budget.hs-boot
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_budget Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
--- a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
+++ b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs-boot b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_memory_priority.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_memory_priority.hs-boot
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_memory_priority Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_metal_surface.hs b/src/Vulkan/Extensions/VK_EXT_metal_surface.hs
--- a/src/Vulkan/Extensions/VK_EXT_metal_surface.hs
+++ b/src/Vulkan/Extensions/VK_EXT_metal_surface.hs
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -216,7 +216,7 @@
                          MetalSurfaceCreateInfoEXT
                       -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                          -- surface object when there is no more specific allocator available (see
-                         -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                         -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io (SurfaceKHR)
 createMetalSurfaceEXT instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_EXT_metal_surface.hs-boot b/src/Vulkan/Extensions/VK_EXT_metal_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_metal_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_metal_surface.hs-boot
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_metal_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -117,7 +117,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_multi_draw Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -225,7 +225,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -281,7 +281,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -289,7 +289,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -490,50 +490,50 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03417# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMultiEXT-scissorCount-03418# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMultiEXT-viewportCount-03419# If the bound graphics
 --     pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04137# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -541,11 +541,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04138# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -553,11 +553,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04139# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -565,11 +565,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-viewportCount-04140# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -577,11 +577,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04141# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -589,11 +589,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -601,21 +601,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-04876# If the bound graphics pipeline
 --     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-04877# If the bound graphics pipeline
 --     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -633,14 +633,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-blendEnable-04727# If rasterization is not
@@ -663,7 +663,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06172# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -672,7 +672,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06173# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -681,7 +681,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06174# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -690,7 +690,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06175# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -699,7 +699,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06176# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -708,7 +708,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06177# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -717,61 +717,61 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-viewMask-06178# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06180# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06181# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06182# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06183# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -780,7 +780,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-imageView-06184# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -793,11 +793,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -809,13 +809,13 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -823,17 +823,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -841,7 +841,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06188# If the currently
 --     bound pipeline was created without a
@@ -849,11 +849,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -862,37 +862,37 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-pDepthAttachment-06189# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiEXT-pStencilAttachment-06190# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiEXT-renderPass-06198# If the current render pass
 --     instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -937,7 +937,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-primitiveTopology-03420# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -953,7 +953,7 @@
 --     was created with both the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic states enabled, then
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -961,7 +961,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-pStrides-04913# If the bound graphics
 --     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     dynamic state enabled, then
@@ -989,7 +989,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-04879# If the bound graphics pipeline
 --     state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1006,7 +1006,7 @@
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
 --
 -- -   #VUID-vkCmdDrawMultiEXT-None-04933# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDraw multiDraw>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiDraw multiDraw>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdDrawMultiEXT-drawCount-04934# @drawCount@ /must/ be less
@@ -1131,7 +1131,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -1187,7 +1187,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -1195,7 +1195,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -1396,50 +1396,50 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419# If the bound
 --     graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04137# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1447,11 +1447,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04138# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1459,11 +1459,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04139# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1471,11 +1471,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04140# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1483,11 +1483,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04141# If
 --     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1495,11 +1495,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142# If
 --     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1507,21 +1507,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04876# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04877# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -1539,14 +1539,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727# If rasterization
@@ -1569,7 +1569,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06172# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1578,7 +1578,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06173# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1587,7 +1587,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06174# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1596,7 +1596,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06175# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1605,7 +1605,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06176# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1614,7 +1614,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06177# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1623,61 +1623,61 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-viewMask-06178# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06180# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06181# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06182# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06183# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1686,7 +1686,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-imageView-06184# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1699,11 +1699,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -1715,13 +1715,13 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1729,17 +1729,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1747,7 +1747,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06188# If the
 --     currently bound pipeline was created without a
@@ -1755,11 +1755,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -1768,37 +1768,37 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06189# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06190# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-renderPass-06198# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -1843,7 +1843,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-03420# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1859,7 +1859,7 @@
 --     pipeline was created with both the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic states enabled, then
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1867,7 +1867,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913# If the bound graphics
 --     pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     dynamic state enabled, then
@@ -1895,7 +1895,7 @@
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04879# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1912,7 +1912,7 @@
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.SHADER_STAGE_MESH_BIT_NV'
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-None-04937# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiDraw multiDraw>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiDraw multiDraw>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdDrawMultiIndexedEXT-firstIndex-04938# (@indexSize@ ×
diff --git a/src/Vulkan/Extensions/VK_EXT_multi_draw.hs-boot b/src/Vulkan/Extensions/VK_EXT_multi_draw.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_multi_draw.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_multi_draw.hs-boot
@@ -117,7 +117,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_multi_draw Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_multi_draw Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs b/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs
--- a/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs
@@ -131,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pageable_device_local_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pageable_device_local_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs-boot b/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_pageable_device_local_memory.hs-boot
@@ -131,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pageable_device_local_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pageable_device_local_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs b/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs
--- a/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs-boot b/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_pci_bus_info.hs-boot
@@ -93,7 +93,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pci_bus_info Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs b/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs
--- a/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs
+++ b/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs
@@ -47,7 +47,7 @@
 -- DRM nodes on Linux.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_device_drm@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_physical_device_drm-fn1 1>^.
+-- @EGL_EXT_device_drm@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm-fn1 1>^.
 -- Unlike the EGL extension, this extension does not expose a string
 -- containing the name of the device file and instead exposes device minor
 -- numbers.
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_physical_device_drm Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs-boot b/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_physical_device_drm.hs-boot
@@ -47,7 +47,7 @@
 -- DRM nodes on Linux.
 --
 -- Its functionality closely overlaps with
--- @EGL_EXT_device_drm@<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_physical_device_drm-fn1 1>^.
+-- @EGL_EXT_device_drm@<https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm-fn1 1>^.
 -- Unlike the EGL extension, this extension does not expose a string
 -- containing the name of the device file and instead exposes device minor
 -- numbers.
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_physical_device_drm Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_physical_device_drm Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs
@@ -21,6 +21,11 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Gregory Grebe
@@ -31,6 +36,10 @@
 -- [__Last Modified Date__]
 --     2020-03-23
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -109,29 +118,27 @@
 -- rather than forcing an unexpected wait.
 --
 -- Applications can prevent unexpected compilation by setting
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
--- on @Vk*PipelineCreateInfo@::@flags@. When set, an ICD must not attempt
+-- 'PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT' on
+-- @Vk*PipelineCreateInfo@::@flags@. When set, an ICD must not attempt
 -- pipeline or shader compilation to create the pipeline object. The ICD
--- will return the result
--- 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'. An ICD may
--- still return a valid 'Vulkan.Core10.Handles.Pipeline' object by either
+-- will return the result 'PIPELINE_COMPILE_REQUIRED_EXT'. An ICD may still
+-- return a valid 'Vulkan.Core10.Handles.Pipeline' object by either
 -- re-using existing pre-compiled objects such as those from a pipeline
 -- cache, or derivative pipelines.
 --
 -- By default @vkCreate*Pipelines@ calls must attempt to create all
 -- pipelines before returning. Setting
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
--- on @Vk*PipelineCreateInfo@::@flags@ can be used as an escape hatch for
+-- 'PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT' on
+-- @Vk*PipelineCreateInfo@::@flags@ can be used as an escape hatch for
 -- batched pipeline creates.
 --
 -- Hidden locks also add to the unpredictability of the cost of pipeline
 -- creation. The most common case of locks inside the @vkCreate*Pipelines@
 -- is internal synchronization of the 'Vulkan.Core10.Handles.PipelineCache'
--- object.
--- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'
--- can be set when calling
--- 'Vulkan.Core10.PipelineCache.createPipelineCache' to state the cache is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
+-- object. 'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT' can be
+-- set when calling 'Vulkan.Core10.PipelineCache.createPipelineCache' to
+-- state the cache is
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
 --
 -- The hope is that armed with this information application and engine
 -- developers can leverage existing asset streaming systems to recover from
@@ -158,25 +165,31 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'
+--     -   'PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
+--     -   'PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
 --
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     -   'PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.Result.Result':
 --
 --     -   'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'
 --
---     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'
+--     -   'PIPELINE_COMPILE_REQUIRED_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-11-01 (Gregory Grebe)
@@ -189,9 +202,8 @@
 --
 -- -   Revision 3, 2020-03-23 (Tobias Hector)
 --
---     -   Changed
---         'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT' to a
---         success code, adding an alias for the original
+--     -   Changed 'PIPELINE_COMPILE_REQUIRED_EXT' to a success code,
+--         adding an alias for the original
 --         'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'. Also updated the xml to
 --         include these codes as return values.
 --
@@ -203,124 +215,59 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control 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_pipeline_creation_cache_control  ( pattern ERROR_PIPELINE_COMPILE_REQUIRED_EXT
-                                                                 , PhysicalDevicePipelineCreationCacheControlFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT
+                                                                 , pattern PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT
+                                                                 , pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT
+                                                                 , pattern PIPELINE_COMPILE_REQUIRED_EXT
+                                                                 , pattern ERROR_PIPELINE_COMPILE_REQUIRED_EXT
+                                                                 , pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT
+                                                                 , PhysicalDevicePipelineCreationCacheControlFeaturesEXT
                                                                  , EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION
                                                                  , pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION
                                                                  , EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME
                                                                  , pattern EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME
                                                                  ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.Result (Result(PIPELINE_COMPILE_REQUIRED_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT))
--- No documentation found for TopLevel "VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT"
-pattern ERROR_PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED_EXT
+import Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control (PhysicalDevicePipelineCreationCacheControlFeatures)
+import Vulkan.Core10.Enums.PipelineCacheCreateFlagBits (PipelineCacheCreateFlags)
+import Vulkan.Core10.Enums.PipelineCacheCreateFlagBits (PipelineCacheCreateFlagBits(PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT))
+import Vulkan.Core10.Enums.Result (Result(PIPELINE_COMPILE_REQUIRED))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
 
 
--- | VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT - Structure
--- describing whether pipeline cache control can be supported by an
--- implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' 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. 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT' /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_pipeline_creation_cache_control VK_EXT_pipeline_creation_cache_control>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeaturesEXT
-  { -- | #features-pipelineCreationCacheControl# @pipelineCreationCacheControl@
-    -- indicates that the implementation supports:
-    --
-    -- -   The following /can/ be used in @Vk*PipelineCreateInfo@::@flags@:
-    --
-    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
-    --
-    --     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
-    --
-    -- -   The following /can/ be used in
-    --     'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo'::@flags@:
-    --
-    --     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'
-    pipelineCreationCacheControl :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDevicePipelineCreationCacheControlFeaturesEXT)
-#endif
-deriving instance Show PhysicalDevicePipelineCreationCacheControlFeaturesEXT
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT"
+pattern PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
 
-instance ToCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDevicePipelineCreationCacheControlFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (pipelineCreationCacheControl))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT where
-  peekCStruct p = do
-    pipelineCreationCacheControl <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDevicePipelineCreationCacheControlFeaturesEXT
-             (bool32ToBool pipelineCreationCacheControl)
+-- No documentation found for TopLevel "VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT"
+pattern PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
 
-instance Storable PhysicalDevicePipelineCreationCacheControlFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDevicePipelineCreationCacheControlFeaturesEXT where
-  zero = PhysicalDevicePipelineCreationCacheControlFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VK_PIPELINE_COMPILE_REQUIRED_EXT"
+pattern PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED
+
+
+-- No documentation found for TopLevel "VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT"
+pattern ERROR_PIPELINE_COMPILE_REQUIRED_EXT = PIPELINE_COMPILE_REQUIRED
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"
+pattern PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
+
+
+-- No documentation found for TopLevel "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT"
+type PhysicalDevicePipelineCreationCacheControlFeaturesEXT = PhysicalDevicePipelineCreationCacheControlFeatures
 
 
 type EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION = 3
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_cache_control.hs-boot
+++ /dev/null
@@ -1,222 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_pipeline_creation_cache_control - device extension
---
--- == VK_EXT_pipeline_creation_cache_control
---
--- [__Name String__]
---     @VK_EXT_pipeline_creation_cache_control@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     298
---
--- [__Revision__]
---     3
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
--- [__Contact__]
---
---     -   Gregory Grebe
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_pipeline_creation_cache_control] @grgrebe_amd%0A<<Here describe the issue or question you have about the VK_EXT_pipeline_creation_cache_control extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-03-23
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Gregory Grebe, AMD
---
---     -   Tobias Hector, AMD
---
---     -   Matthaeus Chajdas, AMD
---
---     -   Mitch Singer, AMD
---
---     -   Spencer Fricke, Samsung Electronics
---
---     -   Stuart Smith, Imagination Technologies
---
---     -   Jeff Bolz, NVIDIA Corporation
---
---     -   Daniel Koch, NVIDIA Corporation
---
---     -   Dan Ginsburg, Valve Corporation
---
---     -   Jeff Leger, QUALCOMM
---
---     -   Michal Pietrasiuk, Intel
---
---     -   Jan-Harald Fredriksen, Arm Limited
---
--- == Description
---
--- This extension adds flags to @Vk*PipelineCreateInfo@ and
--- 'Vulkan.Core10.PipelineCache.PipelineCacheCreateInfo' structures with
--- the aim of improving the predictability of pipeline creation cost. The
--- goal is to provide information about potentially expensive hazards
--- within the client driver during pipeline creation to the application
--- before carrying them out rather than after.
---
--- == Background
---
--- Pipeline creation is a costly operation, and the explicit nature of the
--- Vulkan design means that cost is not hidden from the developer.
--- Applications are also expected to schedule, prioritize, and load balance
--- all calls for pipeline creation. It is strongly advised that
--- applications create pipelines sufficiently ahead of their usage. Failure
--- to do so will result in an unresponsive application, intermittent
--- stuttering, or other poor user experiences. Proper usage of pipeline
--- caches and\/or derivative pipelines help mitigate this but is not
--- assured to eliminate disruption in all cases. In the event that an
--- ahead-of-time creation is not possible, considerations should be taken
--- to ensure that the current execution context is suitable for the
--- workload of pipeline creation including possible shader compilation.
---
--- Applications making API calls to create a pipeline must be prepared for
--- any of the following to occur:
---
--- -   OS\/kernel calls to be made by the ICD
---
--- -   Internal memory allocation not tracked by the @pAllocator@ passed to
---     @vkCreate*Pipelines@
---
--- -   Internal thread synchronization or yielding of the current thread’s
---     core
---
--- -   Extremely long (multi-millisecond+), blocking, compilation times
---
--- -   Arbitrary call stacks depths and stack memory usage
---
--- The job or task based game engines that are being developed to take
--- advantage of explicit graphics APIs like Vulkan may behave exceptionally
--- poorly if any of the above scenarios occur. However, most game engines
--- are already built to “stream” in assets dynamically as the user plays
--- the game. By adding control by way of
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlags', we can
--- require an ICD to report back a failure in critical execution paths
--- rather than forcing an unexpected wait.
---
--- Applications can prevent unexpected compilation by setting
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
--- on @Vk*PipelineCreateInfo@::@flags@. When set, an ICD must not attempt
--- pipeline or shader compilation to create the pipeline object. The ICD
--- will return the result
--- 'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'. An ICD may
--- still return a valid 'Vulkan.Core10.Handles.Pipeline' object by either
--- re-using existing pre-compiled objects such as those from a pipeline
--- cache, or derivative pipelines.
---
--- By default @vkCreate*Pipelines@ calls must attempt to create all
--- pipelines before returning. Setting
--- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
--- on @Vk*PipelineCreateInfo@::@flags@ can be used as an escape hatch for
--- batched pipeline creates.
---
--- Hidden locks also add to the unpredictability of the cost of pipeline
--- creation. The most common case of locks inside the @vkCreate*Pipelines@
--- is internal synchronization of the 'Vulkan.Core10.Handles.PipelineCache'
--- object.
--- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'
--- can be set when calling
--- 'Vulkan.Core10.PipelineCache.createPipelineCache' to state the cache is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>.
---
--- The hope is that armed with this information application and engine
--- developers can leverage existing asset streaming systems to recover from
--- \"just-in-time\" pipeline creation stalls.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDevicePipelineCreationCacheControlFeaturesEXT'
---
--- == New Enums
---
--- -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'
---
--- == New Enum Constants
---
--- -   'EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME'
---
--- -   'EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.Result.Result':
---
---     -   'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'
---
---     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT'
---
--- == Version History
---
--- -   Revision 1, 2019-11-01 (Gregory Grebe)
---
---     -   Initial revision
---
--- -   Revision 2, 2020-02-24 (Gregory Grebe)
---
---     -   Initial public revision
---
--- -   Revision 3, 2020-03-23 (Tobias Hector)
---
---     -   Changed
---         'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT' to a
---         success code, adding an alias for the original
---         'ERROR_PIPELINE_COMPILE_REQUIRED_EXT'. Also updated the xml to
---         include these codes as return values.
---
--- == See Also
---
--- 'PhysicalDevicePipelineCreationCacheControlFeaturesEXT',
--- 'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PipelineCacheCreateFlagBits'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_cache_control 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_pipeline_creation_cache_control  (PhysicalDevicePipelineCreationCacheControlFeaturesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDevicePipelineCreationCacheControlFeaturesEXT
-
-instance ToCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT
-instance Show PhysicalDevicePipelineCreationCacheControlFeaturesEXT
-
-instance FromCStruct PhysicalDevicePipelineCreationCacheControlFeaturesEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs
+++ b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs
@@ -21,6 +21,11 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Special Use__]
 --
 --     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>
@@ -35,6 +40,10 @@
 -- [__Last Modified Date__]
 --     2019-03-12
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -94,8 +103,14 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-03-12 (Jean-Francois Roy)
@@ -111,344 +126,45 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback 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_pipeline_creation_feedback  ( PipelineCreationFeedbackEXT(..)
-                                                            , PipelineCreationFeedbackCreateInfoEXT(..)
+module Vulkan.Extensions.VK_EXT_pipeline_creation_feedback  ( pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT
                                                             , PipelineCreationFeedbackFlagsEXT
-                                                            , PipelineCreationFeedbackFlagBitsEXT( PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT
-                                                                                                 , PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT
-                                                                                                 , PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT
-                                                                                                 , ..
-                                                                                                 )
+                                                            , PipelineCreationFeedbackFlagBitsEXT
+                                                            , PipelineCreationFeedbackEXT
+                                                            , PipelineCreationFeedbackCreateInfoEXT
                                                             , EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION
                                                             , pattern EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION
                                                             , EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME
                                                             , pattern EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME
                                                             ) where
 
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showString)
-import Numeric (showHex)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT))
--- | VkPipelineCreationFeedbackEXT - Feedback about the creation of a
--- pipeline or pipeline stage
---
--- = Description
---
--- If the 'PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT' is not set in @flags@,
--- an implementation /must/ not set any other bits in @flags@, and the
--- values of all other 'PipelineCreationFeedbackEXT' data members are
--- undefined.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_feedback>,
--- 'PipelineCreationFeedbackCreateInfoEXT',
--- 'PipelineCreationFeedbackFlagBitsEXT',
--- 'PipelineCreationFeedbackFlagsEXT'
-data PipelineCreationFeedbackEXT = PipelineCreationFeedbackEXT
-  { -- | @flags@ is a bitmask of 'PipelineCreationFeedbackFlagBitsEXT' providing
-    -- feedback about the creation of a pipeline or of a pipeline stage.
-    flags :: PipelineCreationFeedbackFlagsEXT
-  , -- | @duration@ is the duration spent creating a pipeline or pipeline stage
-    -- in nanoseconds.
-    duration :: Word64
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineCreationFeedbackEXT)
-#endif
-deriving instance Show PipelineCreationFeedbackEXT
+import Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedback)
+import Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlagBits)
+import Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits (PipelineCreationFeedbackFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO
 
-instance ToCStruct PipelineCreationFeedbackEXT where
-  withCStruct x f = allocaBytes 16 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineCreationFeedbackEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlagsEXT)) (flags)
-    poke ((p `plusPtr` 8 :: Ptr Word64)) (duration)
-    f
-  cStructSize = 16
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlagsEXT)) (zero)
-    poke ((p `plusPtr` 8 :: Ptr Word64)) (zero)
-    f
 
-instance FromCStruct PipelineCreationFeedbackEXT where
-  peekCStruct p = do
-    flags <- peek @PipelineCreationFeedbackFlagsEXT ((p `plusPtr` 0 :: Ptr PipelineCreationFeedbackFlagsEXT))
-    duration <- peek @Word64 ((p `plusPtr` 8 :: Ptr Word64))
-    pure $ PipelineCreationFeedbackEXT
-             flags duration
+-- No documentation found for TopLevel "VkPipelineCreationFeedbackFlagsEXT"
+type PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlags
 
-instance Storable PipelineCreationFeedbackEXT where
-  sizeOf ~_ = 16
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PipelineCreationFeedbackEXT where
-  zero = PipelineCreationFeedbackEXT
-           zero
-           zero
+-- No documentation found for TopLevel "VkPipelineCreationFeedbackFlagBitsEXT"
+type PipelineCreationFeedbackFlagBitsEXT = PipelineCreationFeedbackFlagBits
 
 
--- | VkPipelineCreationFeedbackCreateInfoEXT - Request for feedback about the
--- creation of a pipeline
---
--- = Description
---
--- An implementation /should/ write pipeline creation feedback to
--- @pPipelineCreationFeedback@ and /may/ write pipeline stage creation
--- feedback to @pPipelineStageCreationFeedbacks@. An implementation /must/
--- set or clear the 'PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT' in
--- 'PipelineCreationFeedbackEXT'::@flags@ for @pPipelineCreationFeedback@
--- and every element of @pPipelineStageCreationFeedbacks@.
---
--- Note
---
--- One common scenario for an implementation to skip per-stage feedback is
--- when 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT'
--- is set in @pPipelineCreationFeedback@.
---
--- When chained to
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV', or
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', the @i@ element of
--- @pPipelineStageCreationFeedbacks@ corresponds to the @i@ element of
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@pStages@,
--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@pStages@,
--- or 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@pStages@. When
--- chained to 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo', the first
--- element of @pPipelineStageCreationFeedbacks@ corresponds to
--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo'::@stage@.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668#
---     When chained to 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@
---     /must/ equal
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@stageCount@
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669#
---     When chained to 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
---     'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@
---     /must/ equal 1
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670#
---     When chained to
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
---     'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@
---     /must/ equal
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR'::@stageCount@
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969#
---     When chained to
---     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
---     'PipelineCreationFeedbackEXT'::@pipelineStageCreationFeedbackCount@
---     /must/ equal
---     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV'::@stageCount@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter#
---     @pPipelineCreationFeedback@ /must/ be a valid pointer to a
---     'PipelineCreationFeedbackEXT' structure
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter#
---     @pPipelineStageCreationFeedbacks@ /must/ be a valid pointer to an
---     array of @pipelineStageCreationFeedbackCount@
---     'PipelineCreationFeedbackEXT' structures
---
--- -   #VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength#
---     @pipelineStageCreationFeedbackCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_feedback>,
--- 'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
--- 'PipelineCreationFeedbackEXT',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfoEXT
-  { -- | @pPipelineCreationFeedback@ is a pointer to a
-    -- 'PipelineCreationFeedbackEXT' structure.
-    pipelineCreationFeedback :: Ptr PipelineCreationFeedbackEXT
-  , -- | @pipelineStageCreationFeedbackCount@ is the number of elements in
-    -- @pPipelineStageCreationFeedbacks@.
-    pipelineStageCreationFeedbackCount :: Word32
-  , -- | @pPipelineStageCreationFeedbacks@ is a pointer to an array of
-    -- @pipelineStageCreationFeedbackCount@ 'PipelineCreationFeedbackEXT'
-    -- structures.
-    pipelineStageCreationFeedbacks :: Ptr PipelineCreationFeedbackEXT
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineCreationFeedbackCreateInfoEXT)
-#endif
-deriving instance Show PipelineCreationFeedbackCreateInfoEXT
-
-instance ToCStruct PipelineCreationFeedbackCreateInfoEXT where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineCreationFeedbackCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (pipelineCreationFeedback)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (pipelineStageCreationFeedbackCount)
-    poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (pipelineStageCreationFeedbacks)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedbackEXT))) (zero)
-    f
-
-instance FromCStruct PipelineCreationFeedbackCreateInfoEXT where
-  peekCStruct p = do
-    pPipelineCreationFeedback <- peek @(Ptr PipelineCreationFeedbackEXT) ((p `plusPtr` 16 :: Ptr (Ptr PipelineCreationFeedbackEXT)))
-    pipelineStageCreationFeedbackCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pPipelineStageCreationFeedbacks <- peek @(Ptr PipelineCreationFeedbackEXT) ((p `plusPtr` 32 :: Ptr (Ptr PipelineCreationFeedbackEXT)))
-    pure $ PipelineCreationFeedbackCreateInfoEXT
-             pPipelineCreationFeedback pipelineStageCreationFeedbackCount pPipelineStageCreationFeedbacks
-
-instance Storable PipelineCreationFeedbackCreateInfoEXT where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineCreationFeedbackCreateInfoEXT where
-  zero = PipelineCreationFeedbackCreateInfoEXT
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkPipelineCreationFeedbackEXT"
+type PipelineCreationFeedbackEXT = PipelineCreationFeedback
 
 
-type PipelineCreationFeedbackFlagsEXT = PipelineCreationFeedbackFlagBitsEXT
-
--- | VkPipelineCreationFeedbackFlagBitsEXT - Bitmask specifying pipeline or
--- pipeline stage creation feedback
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback VK_EXT_pipeline_creation_feedback>,
--- 'PipelineCreationFeedbackCreateInfoEXT', 'PipelineCreationFeedbackEXT',
--- 'PipelineCreationFeedbackFlagsEXT'
-newtype PipelineCreationFeedbackFlagBitsEXT = PipelineCreationFeedbackFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT' indicates that the feedback
--- information is valid.
-pattern PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = PipelineCreationFeedbackFlagBitsEXT 0x00000001
--- | 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT'
--- indicates that a readily usable pipeline or pipeline stage was found in
--- the @pipelineCache@ specified by the application in the pipeline
--- creation command.
---
--- An implementation /should/ set the
--- 'PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT' bit
--- if it was able to avoid the large majority of pipeline or pipeline stage
--- creation work by using the @pipelineCache@ parameter of
--- 'Vulkan.Core10.Pipeline.createGraphicsPipelines',
--- 'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.createRayTracingPipelinesKHR',
--- 'Vulkan.Extensions.VK_NV_ray_tracing.createRayTracingPipelinesNV', or
--- 'Vulkan.Core10.Pipeline.createComputePipelines'. When an implementation
--- sets this bit for the entire pipeline, it /may/ leave it unset for any
--- stage.
---
--- Note
---
--- Implementations are encouraged to provide a meaningful signal to
--- applications using this bit. The intention is to communicate to the
--- application that the pipeline or pipeline stage was created \"as fast as
--- it gets\" using the pipeline cache provided by the application. If an
--- implementation uses an internal cache, it is discouraged from setting
--- this bit as the feedback would be unactionable.
-pattern PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT =
-  PipelineCreationFeedbackFlagBitsEXT 0x00000002
--- | 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT'
--- indicates that the base pipeline specified by the @basePipelineHandle@
--- or @basePipelineIndex@ member of the @Vk*PipelineCreateInfo@ structure
--- was used to accelerate the creation of the pipeline.
---
--- An implementation /should/ set the
--- 'PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT' bit if
--- it was able to avoid a significant amount of work by using the base
--- pipeline.
---
--- Note
---
--- While \"significant amount of work\" is subjective, implementations are
--- encouraged to provide a meaningful signal to applications using this
--- bit. For example, a 1% reduction in duration may not warrant setting
--- this bit, while a 50% reduction would.
-pattern PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = PipelineCreationFeedbackFlagBitsEXT 0x00000004
-
-conNamePipelineCreationFeedbackFlagBitsEXT :: String
-conNamePipelineCreationFeedbackFlagBitsEXT = "PipelineCreationFeedbackFlagBitsEXT"
-
-enumPrefixPipelineCreationFeedbackFlagBitsEXT :: String
-enumPrefixPipelineCreationFeedbackFlagBitsEXT = "PIPELINE_CREATION_FEEDBACK_"
-
-showTablePipelineCreationFeedbackFlagBitsEXT :: [(PipelineCreationFeedbackFlagBitsEXT, String)]
-showTablePipelineCreationFeedbackFlagBitsEXT =
-  [ (PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT                         , "VALID_BIT_EXT")
-  , (PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT, "APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT")
-  , (PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT    , "BASE_PIPELINE_ACCELERATION_BIT_EXT")
-  ]
-
-instance Show PipelineCreationFeedbackFlagBitsEXT where
-  showsPrec = enumShowsPrec enumPrefixPipelineCreationFeedbackFlagBitsEXT
-                            showTablePipelineCreationFeedbackFlagBitsEXT
-                            conNamePipelineCreationFeedbackFlagBitsEXT
-                            (\(PipelineCreationFeedbackFlagBitsEXT x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read PipelineCreationFeedbackFlagBitsEXT where
-  readPrec = enumReadPrec enumPrefixPipelineCreationFeedbackFlagBitsEXT
-                          showTablePipelineCreationFeedbackFlagBitsEXT
-                          conNamePipelineCreationFeedbackFlagBitsEXT
-                          PipelineCreationFeedbackFlagBitsEXT
+-- No documentation found for TopLevel "VkPipelineCreationFeedbackCreateInfoEXT"
+type PipelineCreationFeedbackCreateInfoEXT = PipelineCreationFeedbackCreateInfo
 
 
 type EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs-boot b/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_pipeline_creation_feedback.hs-boot
+++ /dev/null
@@ -1,140 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_pipeline_creation_feedback - device extension
---
--- == VK_EXT_pipeline_creation_feedback
---
--- [__Name String__]
---     @VK_EXT_pipeline_creation_feedback@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     193
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
--- [__Special Use__]
---
---     -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#extendingvulkan-compatibility-specialuse Developer tools>
---
--- [__Contact__]
---
---     -   Jean-Francois Roy
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_pipeline_creation_feedback] @jfroy%0A<<Here describe the issue or question you have about the VK_EXT_pipeline_creation_feedback extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2019-03-12
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Jean-Francois Roy, Google
---
---     -   Hai Nguyen, Google
---
---     -   Andrew Ellem, Google
---
---     -   Bob Fraser, Google
---
---     -   Sujeevan Rajayogam, Google
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Jeff Leger, Qualcomm Technologies, Inc.
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Daniel Koch, NVIDIA
---
---     -   Neil Henning, AMD
---
--- == Description
---
--- This extension adds a mechanism to provide feedback to an application
--- about pipeline creation, with the specific goal of allowing a feedback
--- loop between build systems and in-the-field application executions to
--- ensure effective pipeline caches are shipped to customers.
---
--- == New Structures
---
--- -   'PipelineCreationFeedbackEXT'
---
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'Vulkan.Core10.Pipeline.ComputePipelineCreateInfo',
---     'Vulkan.Extensions.VK_NV_ray_tracing.RayTracingPipelineCreateInfoNV',
---     'Vulkan.Extensions.VK_KHR_ray_tracing_pipeline.RayTracingPipelineCreateInfoKHR':
---
---     -   'PipelineCreationFeedbackCreateInfoEXT'
---
--- == New Enums
---
--- -   'PipelineCreationFeedbackFlagBitsEXT'
---
--- == New Bitmasks
---
--- -   'PipelineCreationFeedbackFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME'
---
--- -   'EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT'
---
--- == Version History
---
--- -   Revision 1, 2019-03-12 (Jean-Francois Roy)
---
---     -   Initial revision
---
--- == See Also
---
--- 'PipelineCreationFeedbackCreateInfoEXT', 'PipelineCreationFeedbackEXT',
--- 'PipelineCreationFeedbackFlagBitsEXT',
--- 'PipelineCreationFeedbackFlagsEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_pipeline_creation_feedback 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_pipeline_creation_feedback  ( PipelineCreationFeedbackCreateInfoEXT
-                                                            , PipelineCreationFeedbackEXT
-                                                            ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PipelineCreationFeedbackCreateInfoEXT
-
-instance ToCStruct PipelineCreationFeedbackCreateInfoEXT
-instance Show PipelineCreationFeedbackCreateInfoEXT
-
-instance FromCStruct PipelineCreationFeedbackCreateInfoEXT
-
-
-data PipelineCreationFeedbackEXT
-
-instance ToCStruct PipelineCreationFeedbackEXT
-instance Show PipelineCreationFeedbackEXT
-
-instance FromCStruct PipelineCreationFeedbackEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_post_depth_coverage.hs b/src/Vulkan/Extensions/VK_EXT_post_depth_coverage.hs
--- a/src/Vulkan/Extensions/VK_EXT_post_depth_coverage.hs
+++ b/src/Vulkan/Extensions/VK_EXT_post_depth_coverage.hs
@@ -55,18 +55,18 @@
 -- which allows the fragment shader to control whether values in the
 -- 'Vulkan.Core10.FundamentalTypes.SampleMask' built-in input variable
 -- reflect the coverage after early
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-depth depth>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-depth depth>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil stencil>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil stencil>
 -- tests are applied.
 --
 -- This extension adds a new @PostDepthCoverage@ execution mode under the
 -- @SampleMaskPostDepthCoverage@ capability. When this mode is specified
 -- along with @EarlyFragmentTests@, the value of an input variable
 -- decorated with the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask >
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask >
 -- built-in reflects the coverage after the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-fragment-earlytest early fragment tests>
 -- are applied. Otherwise, it reflects the coverage before the depth and
 -- stencil tests.
 --
@@ -83,7 +83,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-SampleMaskPostDepthCoverage SampleMaskPostDepthCoverage>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SampleMaskPostDepthCoverage SampleMaskPostDepthCoverage>
 --
 -- == Version History
 --
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_post_depth_coverage Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_post_depth_coverage Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs b/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs
--- a/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs
+++ b/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_primitive_topology_list_restart Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitive_topology_list_restart Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs-boot b/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_primitive_topology_list_restart.hs-boot
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_primitive_topology_list_restart Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_primitive_topology_list_restart Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_private_data.hs b/src/Vulkan/Extensions/VK_EXT_private_data.hs
--- a/src/Vulkan/Extensions/VK_EXT_private_data.hs
+++ b/src/Vulkan/Extensions/VK_EXT_private_data.hs
@@ -21,6 +21,11 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Matthew Rusch
@@ -31,6 +36,10 @@
 -- [__Last Modified Date__]
 --     2020-03-25
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -46,18 +55,17 @@
 --
 -- == Description
 --
--- The \'VK_EXT_private_data\' extension is a device extension which
--- enables attaching arbitrary payloads to Vulkan objects. It introduces
--- the idea of private data slots as a means of storing a 64-bit unsigned
--- integer of application defined data. Private data slots can be created
--- or destroyed any time an associated device is available. Private data
--- slots can be reserved at device creation time, and limiting use to the
--- amount reserved will allow the extension to exhibit better performance
--- characteristics.
+-- This extension is a device extension which enables attaching arbitrary
+-- payloads to Vulkan objects. It introduces the idea of private data slots
+-- as a means of storing a 64-bit unsigned integer of application defined
+-- data. Private data slots can be created or destroyed any time an
+-- associated device is available. Private data slots can be reserved at
+-- device creation time, and limiting use to the amount reserved will allow
+-- the extension to exhibit better performance characteristics.
 --
 -- == New Object Types
 --
--- -   'Vulkan.Extensions.Handles.PrivateDataSlotEXT'
+-- -   'PrivateDataSlotEXT'
 --
 -- == New Commands
 --
@@ -99,16 +107,22 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
 --
---     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT'
+--     -   'OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Examples
 --
 -- -   In progress
@@ -124,617 +138,106 @@
 -- 'DevicePrivateDataCreateInfoEXT',
 -- 'PhysicalDevicePrivateDataFeaturesEXT',
 -- 'PrivateDataSlotCreateFlagBitsEXT', 'PrivateDataSlotCreateFlagsEXT',
--- 'PrivateDataSlotCreateInfoEXT',
--- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT',
+-- 'PrivateDataSlotCreateInfoEXT', 'PrivateDataSlotEXT',
 -- 'createPrivateDataSlotEXT', 'destroyPrivateDataSlotEXT',
 -- 'getPrivateDataEXT', 'setPrivateDataEXT'
 --
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_private_data 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_private_data  ( createPrivateDataSlotEXT
-                                              , withPrivateDataSlotEXT
+module Vulkan.Extensions.VK_EXT_private_data  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT
+                                              , pattern STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT
+                                              , pattern STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT
+                                              , pattern OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT
+                                              , createPrivateDataSlotEXT
                                               , destroyPrivateDataSlotEXT
                                               , setPrivateDataEXT
                                               , getPrivateDataEXT
-                                              , DevicePrivateDataCreateInfoEXT(..)
-                                              , PrivateDataSlotCreateInfoEXT(..)
-                                              , PhysicalDevicePrivateDataFeaturesEXT(..)
                                               , PrivateDataSlotCreateFlagsEXT
-                                              , PrivateDataSlotCreateFlagBitsEXT(..)
+                                              , PrivateDataSlotEXT
+                                              , PrivateDataSlotCreateFlagBitsEXT
+                                              , DevicePrivateDataCreateInfoEXT
+                                              , PrivateDataSlotCreateInfoEXT
+                                              , PhysicalDevicePrivateDataFeaturesEXT
                                               , EXT_PRIVATE_DATA_SPEC_VERSION
                                               , pattern EXT_PRIVATE_DATA_SPEC_VERSION
                                               , EXT_PRIVATE_DATA_EXTENSION_NAME
                                               , pattern EXT_PRIVATE_DATA_EXTENSION_NAME
-                                              , PrivateDataSlotEXT(..)
                                               ) where
 
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Exception.Base (bracket)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import GHC.Base (when)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showString)
-import Numeric (showHex)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.AllocationCallbacks (AllocationCallbacks)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkCreatePrivateDataSlotEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkDestroyPrivateDataSlotEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkGetPrivateDataEXT))
-import Vulkan.Dynamic (DeviceCmds(pVkSetPrivateDataEXT))
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.ObjectType (ObjectType)
-import Vulkan.Core10.Enums.ObjectType (ObjectType(..))
-import Vulkan.Extensions.Handles (PrivateDataSlotEXT)
-import Vulkan.Extensions.Handles (PrivateDataSlotEXT(..))
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Extensions.Handles (PrivateDataSlotEXT(..))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCreatePrivateDataSlotEXT
-  :: FunPtr (Ptr Device_T -> Ptr PrivateDataSlotCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr PrivateDataSlotEXT -> IO Result) -> Ptr Device_T -> Ptr PrivateDataSlotCreateInfoEXT -> Ptr AllocationCallbacks -> Ptr PrivateDataSlotEXT -> IO Result
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data (createPrivateDataSlot)
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data (destroyPrivateDataSlot)
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data (getPrivateData)
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data (setPrivateData)
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data (DevicePrivateDataCreateInfo)
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data (PhysicalDevicePrivateDataFeatures)
+import Vulkan.Core13.Handles (PrivateDataSlot)
+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlagBits)
+import Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits (PrivateDataSlotCreateFlags)
+import Vulkan.Core13.Promoted_From_VK_EXT_private_data (PrivateDataSlotCreateInfo)
+import Vulkan.Core10.Enums.ObjectType (ObjectType(OBJECT_TYPE_PRIVATE_DATA_SLOT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES
 
--- | vkCreatePrivateDataSlotEXT - Create a slot for private data storage
---
--- == Valid Usage
---
--- -   #VUID-vkCreatePrivateDataSlotEXT-privateData-04564# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-privateData privateData>
---     feature /must/ be enabled
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCreatePrivateDataSlotEXT-device-parameter# @device@ /must/
---     be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkCreatePrivateDataSlotEXT-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'PrivateDataSlotCreateInfoEXT' structure
---
--- -   #VUID-vkCreatePrivateDataSlotEXT-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkCreatePrivateDataSlotEXT-pPrivateDataSlot-parameter#
---     @pPrivateDataSlot@ /must/ be a valid pointer to a
---     'Vulkan.Extensions.Handles.PrivateDataSlotEXT' handle
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device', 'PrivateDataSlotCreateInfoEXT',
--- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT'
-createPrivateDataSlotEXT :: forall io
-                          . (MonadIO io)
-                         => -- | @device@ is the logical device associated with the creation of the
-                            -- object(s) holding the private data slot.
-                            Device
-                         -> -- | @pCreateInfo@ is a pointer to a 'PrivateDataSlotCreateInfoEXT'
-                            PrivateDataSlotCreateInfoEXT
-                         -> -- | @pAllocator@ controls host memory allocation as described in the
-                            -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                            -- chapter.
-                            ("allocator" ::: Maybe AllocationCallbacks)
-                         -> io (PrivateDataSlotEXT)
-createPrivateDataSlotEXT device createInfo allocator = liftIO . evalContT $ do
-  let vkCreatePrivateDataSlotEXTPtr = pVkCreatePrivateDataSlotEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCreatePrivateDataSlotEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCreatePrivateDataSlotEXT is null" Nothing Nothing
-  let vkCreatePrivateDataSlotEXT' = mkVkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXTPtr
-  pCreateInfo <- ContT $ withCStruct (createInfo)
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  pPPrivateDataSlot <- ContT $ bracket (callocBytes @PrivateDataSlotEXT 8) free
-  r <- lift $ traceAroundEvent "vkCreatePrivateDataSlotEXT" (vkCreatePrivateDataSlotEXT' (deviceHandle (device)) pCreateInfo pAllocator (pPPrivateDataSlot))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pPrivateDataSlot <- lift $ peek @PrivateDataSlotEXT pPPrivateDataSlot
-  pure $ (pPrivateDataSlot)
 
--- | A convenience wrapper to make a compatible pair of calls to
--- 'createPrivateDataSlotEXT' and 'destroyPrivateDataSlotEXT'
---
--- To ensure that 'destroyPrivateDataSlotEXT' is always called: pass
--- 'Control.Exception.bracket' (or the allocate function from your
--- favourite resource management library) as the last argument.
--- To just extract the pair pass '(,)' as the last argument.
---
-withPrivateDataSlotEXT :: forall io r . MonadIO io => Device -> PrivateDataSlotCreateInfoEXT -> Maybe AllocationCallbacks -> (io PrivateDataSlotEXT -> (PrivateDataSlotEXT -> io ()) -> r) -> r
-withPrivateDataSlotEXT device pCreateInfo pAllocator b =
-  b (createPrivateDataSlotEXT device pCreateInfo pAllocator)
-    (\(o0) -> destroyPrivateDataSlotEXT device o0 pAllocator)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO
 
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkDestroyPrivateDataSlotEXT
-  :: FunPtr (Ptr Device_T -> PrivateDataSlotEXT -> Ptr AllocationCallbacks -> IO ()) -> Ptr Device_T -> PrivateDataSlotEXT -> Ptr AllocationCallbacks -> IO ()
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO
 
--- | vkDestroyPrivateDataSlotEXT - Destroy a private data slot
---
--- == Valid Usage
---
--- -   #VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04062# If
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @privateDataSlot@ was created, a compatible set of
---     callbacks /must/ be provided here
---
--- -   #VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04063# If no
---     'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' were
---     provided when @privateDataSlot@ was created, @pAllocator@ /must/ be
---     @NULL@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkDestroyPrivateDataSlotEXT-device-parameter# @device@ /must/
---     be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter# If
---     @privateDataSlot@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @privateDataSlot@ /must/ be a valid
---     'Vulkan.Extensions.Handles.PrivateDataSlotEXT' handle
---
--- -   #VUID-vkDestroyPrivateDataSlotEXT-pAllocator-parameter# If
---     @pAllocator@ is not @NULL@, @pAllocator@ /must/ be a valid pointer
---     to a valid 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks'
---     structure
---
--- -   #VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent# If
---     @privateDataSlot@ is a valid handle, it /must/ have been created,
---     allocated, or retrieved from @device@
---
--- == Host Synchronization
---
--- -   Host access to @privateDataSlot@ /must/ be externally synchronized
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks',
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT'
-destroyPrivateDataSlotEXT :: forall io
-                           . (MonadIO io)
-                          => -- | @device@ is the logical device associated with the creation of the
-                             -- object(s) holding the private data slot.
-                             Device
-                          -> -- | @privateDataSlot@ is the private data slot to destroy.
-                             PrivateDataSlotEXT
-                          -> -- | @pAllocator@ controls host memory allocation as described in the
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
-                             -- chapter.
-                             ("allocator" ::: Maybe AllocationCallbacks)
-                          -> io ()
-destroyPrivateDataSlotEXT device privateDataSlot allocator = liftIO . evalContT $ do
-  let vkDestroyPrivateDataSlotEXTPtr = pVkDestroyPrivateDataSlotEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkDestroyPrivateDataSlotEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkDestroyPrivateDataSlotEXT is null" Nothing Nothing
-  let vkDestroyPrivateDataSlotEXT' = mkVkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXTPtr
-  pAllocator <- case (allocator) of
-    Nothing -> pure nullPtr
-    Just j -> ContT $ withCStruct (j)
-  lift $ traceAroundEvent "vkDestroyPrivateDataSlotEXT" (vkDestroyPrivateDataSlotEXT' (deviceHandle (device)) (privateDataSlot) pAllocator)
-  pure $ ()
 
+-- No documentation found for TopLevel "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"
+pattern OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = OBJECT_TYPE_PRIVATE_DATA_SLOT
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkSetPrivateDataEXT
-  :: FunPtr (Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlotEXT -> Word64 -> IO Result) -> Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlotEXT -> Word64 -> IO Result
 
--- | vkSetPrivateDataEXT - Associate data with a Vulkan object
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Core10.Enums.ObjectType.ObjectType',
--- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT'
-setPrivateDataEXT :: forall io
-                   . (MonadIO io)
-                  => -- | @device@ is the device that created the object.
-                     --
-                     -- #VUID-vkSetPrivateDataEXT-device-parameter# @device@ /must/ be a valid
-                     -- 'Vulkan.Core10.Handles.Device' handle
-                     Device
-                  -> -- | @objectType@ is a 'Vulkan.Core10.Enums.ObjectType.ObjectType' specifying
-                     -- the type of object to associate data with.
-                     --
-                     -- #VUID-vkSetPrivateDataEXT-objectType-parameter# @objectType@ /must/ be a
-                     -- valid 'Vulkan.Core10.Enums.ObjectType.ObjectType' value
-                     ObjectType
-                  -> -- | @objectHandle@ is a handle to the object to associate data with.
-                     --
-                     -- #VUID-vkSetPrivateDataEXT-objectHandle-04016# @objectHandle@ /must/ be
-                     -- @device@ or a child of @device@
-                     --
-                     -- #VUID-vkSetPrivateDataEXT-objectHandle-04017# @objectHandle@ /must/ be a
-                     -- valid handle to an object of type @objectType@
-                     ("objectHandle" ::: Word64)
-                  -> -- | @privateDataSlot@ is a handle to a
-                     -- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT' specifying location of
-                     -- private data storage.
-                     --
-                     -- #VUID-vkSetPrivateDataEXT-privateDataSlot-parameter# @privateDataSlot@
-                     -- /must/ be a valid 'Vulkan.Extensions.Handles.PrivateDataSlotEXT' handle
-                     --
-                     -- #VUID-vkSetPrivateDataEXT-privateDataSlot-parent# @privateDataSlot@
-                     -- /must/ have been created, allocated, or retrieved from @device@
-                     PrivateDataSlotEXT
-                  -> -- | @data@ is user defined data to associate the object with. This data will
-                     -- be stored at @privateDataSlot@.
-                     ("data" ::: Word64)
-                  -> io ()
-setPrivateDataEXT device objectType objectHandle privateDataSlot data' = liftIO $ do
-  let vkSetPrivateDataEXTPtr = pVkSetPrivateDataEXT (case device of Device{deviceCmds} -> deviceCmds)
-  unless (vkSetPrivateDataEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkSetPrivateDataEXT is null" Nothing Nothing
-  let vkSetPrivateDataEXT' = mkVkSetPrivateDataEXT vkSetPrivateDataEXTPtr
-  r <- traceAroundEvent "vkSetPrivateDataEXT" (vkSetPrivateDataEXT' (deviceHandle (device)) (objectType) (objectHandle) (privateDataSlot) (data'))
-  when (r < SUCCESS) (throwIO (VulkanException r))
+-- No documentation found for TopLevel "vkCreatePrivateDataSlotEXT"
+createPrivateDataSlotEXT = createPrivateDataSlot
 
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPrivateDataEXT
-  :: FunPtr (Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlotEXT -> Ptr Word64 -> IO ()) -> Ptr Device_T -> ObjectType -> Word64 -> PrivateDataSlotEXT -> Ptr Word64 -> IO ()
+-- No documentation found for TopLevel "vkDestroyPrivateDataSlotEXT"
+destroyPrivateDataSlotEXT = destroyPrivateDataSlot
 
--- | vkGetPrivateDataEXT - Retrieve data associated with a Vulkan object
---
--- = Description
---
--- Note
---
--- Due to platform details on Android, implementations might not be able to
--- reliably return @0@ from calls to 'getPrivateDataEXT' for
--- 'Vulkan.Extensions.Handles.SwapchainKHR' objects on which
--- 'setPrivateDataEXT' has not previously been called. This erratum is
--- exclusive to the Android platform and objects of type
--- 'Vulkan.Extensions.Handles.SwapchainKHR'.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'Vulkan.Core10.Handles.Device',
--- 'Vulkan.Core10.Enums.ObjectType.ObjectType',
--- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT'
-getPrivateDataEXT :: forall io
-                   . (MonadIO io)
-                  => -- | @device@ is the device that created the object
-                     --
-                     -- #VUID-vkGetPrivateDataEXT-device-parameter# @device@ /must/ be a valid
-                     -- 'Vulkan.Core10.Handles.Device' handle
-                     Device
-                  -> -- | @objectType@ is a 'Vulkan.Core10.Enums.ObjectType.ObjectType' specifying
-                     -- the type of object data is associated with.
-                     --
-                     -- #VUID-vkGetPrivateDataEXT-objectType-04018# @objectType@ /must/ be
-                     -- 'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_DEVICE', or an object type
-                     -- whose parent is 'Vulkan.Core10.Handles.Device'
-                     --
-                     -- #VUID-vkGetPrivateDataEXT-objectType-parameter# @objectType@ /must/ be a
-                     -- valid 'Vulkan.Core10.Enums.ObjectType.ObjectType' value
-                     ObjectType
-                  -> -- | @objectHandle@ is a handle to the object data is associated with.
-                     ("objectHandle" ::: Word64)
-                  -> -- | @privateDataSlot@ is a handle to a
-                     -- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT' specifying location of
-                     -- private data pointer storage.
-                     --
-                     -- #VUID-vkGetPrivateDataEXT-privateDataSlot-parameter# @privateDataSlot@
-                     -- /must/ be a valid 'Vulkan.Extensions.Handles.PrivateDataSlotEXT' handle
-                     --
-                     -- #VUID-vkGetPrivateDataEXT-privateDataSlot-parent# @privateDataSlot@
-                     -- /must/ have been created, allocated, or retrieved from @device@
-                     PrivateDataSlotEXT
-                  -> io (("data" ::: Word64))
-getPrivateDataEXT device objectType objectHandle privateDataSlot = liftIO . evalContT $ do
-  let vkGetPrivateDataEXTPtr = pVkGetPrivateDataEXT (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetPrivateDataEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPrivateDataEXT is null" Nothing Nothing
-  let vkGetPrivateDataEXT' = mkVkGetPrivateDataEXT vkGetPrivateDataEXTPtr
-  pPData <- ContT $ bracket (callocBytes @Word64 8) free
-  lift $ traceAroundEvent "vkGetPrivateDataEXT" (vkGetPrivateDataEXT' (deviceHandle (device)) (objectType) (objectHandle) (privateDataSlot) (pPData))
-  pData <- lift $ peek @Word64 pPData
-  pure $ (pData)
 
+-- No documentation found for TopLevel "vkSetPrivateDataEXT"
+setPrivateDataEXT = setPrivateData
 
--- | VkDevicePrivateDataCreateInfoEXT - Reserve private data slots
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfoEXT
-  { -- | @privateDataSlotRequestCount@ is the amount of slots to reserve.
-    privateDataSlotRequestCount :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DevicePrivateDataCreateInfoEXT)
-#endif
-deriving instance Show DevicePrivateDataCreateInfoEXT
 
-instance ToCStruct DevicePrivateDataCreateInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DevicePrivateDataCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (privateDataSlotRequestCount)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
+-- No documentation found for TopLevel "vkGetPrivateDataEXT"
+getPrivateDataEXT = getPrivateData
 
-instance FromCStruct DevicePrivateDataCreateInfoEXT where
-  peekCStruct p = do
-    privateDataSlotRequestCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pure $ DevicePrivateDataCreateInfoEXT
-             privateDataSlotRequestCount
 
-instance Storable DevicePrivateDataCreateInfoEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
+-- No documentation found for TopLevel "VkPrivateDataSlotCreateFlagsEXT"
+type PrivateDataSlotCreateFlagsEXT = PrivateDataSlotCreateFlags
 
-instance Zero DevicePrivateDataCreateInfoEXT where
-  zero = DevicePrivateDataCreateInfoEXT
-           zero
 
+-- No documentation found for TopLevel "VkPrivateDataSlotEXT"
+type PrivateDataSlotEXT = PrivateDataSlot
 
--- | VkPrivateDataSlotCreateInfoEXT - Structure specifying the parameters of
--- private data slot construction
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'PrivateDataSlotCreateFlagsEXT',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'createPrivateDataSlotEXT'
-data PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfoEXT
-  { -- | @flags@ is a bitmask of 'PrivateDataSlotCreateFlagsEXT' specifying
-    -- additional parameters of the new private data slot
-    --
-    -- #VUID-VkPrivateDataSlotCreateInfoEXT-flags-zerobitmask# @flags@ /must/
-    -- be @0@
-    flags :: PrivateDataSlotCreateFlagsEXT }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PrivateDataSlotCreateInfoEXT)
-#endif
-deriving instance Show PrivateDataSlotCreateInfoEXT
 
-instance ToCStruct PrivateDataSlotCreateInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PrivateDataSlotCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PrivateDataSlotCreateFlagsEXT)) (flags)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PrivateDataSlotCreateFlagsEXT)) (zero)
-    f
-
-instance FromCStruct PrivateDataSlotCreateInfoEXT where
-  peekCStruct p = do
-    flags <- peek @PrivateDataSlotCreateFlagsEXT ((p `plusPtr` 16 :: Ptr PrivateDataSlotCreateFlagsEXT))
-    pure $ PrivateDataSlotCreateInfoEXT
-             flags
-
-instance Storable PrivateDataSlotCreateInfoEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PrivateDataSlotCreateInfoEXT where
-  zero = PrivateDataSlotCreateInfoEXT
-           zero
+-- No documentation found for TopLevel "VkPrivateDataSlotCreateFlagBitsEXT"
+type PrivateDataSlotCreateFlagBitsEXT = PrivateDataSlotCreateFlagBits
 
 
--- | VkPhysicalDevicePrivateDataFeaturesEXT - Structure specifying physical
--- device support
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDevicePrivateDataFeaturesEXT' 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. 'PhysicalDevicePrivateDataFeaturesEXT' /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_private_data VK_EXT_private_data>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeaturesEXT
-  { -- | #features-privateData# @privateData@ indicates whether the
-    -- implementation supports private data. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#private-data Private Data>.
-    privateData :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDevicePrivateDataFeaturesEXT)
-#endif
-deriving instance Show PhysicalDevicePrivateDataFeaturesEXT
-
-instance ToCStruct PhysicalDevicePrivateDataFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDevicePrivateDataFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (privateData))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDevicePrivateDataFeaturesEXT where
-  peekCStruct p = do
-    privateData <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDevicePrivateDataFeaturesEXT
-             (bool32ToBool privateData)
-
-instance Storable PhysicalDevicePrivateDataFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDevicePrivateDataFeaturesEXT where
-  zero = PhysicalDevicePrivateDataFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VkDevicePrivateDataCreateInfoEXT"
+type DevicePrivateDataCreateInfoEXT = DevicePrivateDataCreateInfo
 
 
-type PrivateDataSlotCreateFlagsEXT = PrivateDataSlotCreateFlagBitsEXT
-
--- | VkPrivateDataSlotCreateFlagBitsEXT - Bitmask specifying additional
--- parameters for private data slot creation
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data VK_EXT_private_data>,
--- 'PrivateDataSlotCreateFlagsEXT'
-newtype PrivateDataSlotCreateFlagBitsEXT = PrivateDataSlotCreateFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
+-- No documentation found for TopLevel "VkPrivateDataSlotCreateInfoEXT"
+type PrivateDataSlotCreateInfoEXT = PrivateDataSlotCreateInfo
 
 
-conNamePrivateDataSlotCreateFlagBitsEXT :: String
-conNamePrivateDataSlotCreateFlagBitsEXT = "PrivateDataSlotCreateFlagBitsEXT"
-
-enumPrefixPrivateDataSlotCreateFlagBitsEXT :: String
-enumPrefixPrivateDataSlotCreateFlagBitsEXT = ""
-
-showTablePrivateDataSlotCreateFlagBitsEXT :: [(PrivateDataSlotCreateFlagBitsEXT, String)]
-showTablePrivateDataSlotCreateFlagBitsEXT = []
-
-instance Show PrivateDataSlotCreateFlagBitsEXT where
-  showsPrec = enumShowsPrec enumPrefixPrivateDataSlotCreateFlagBitsEXT
-                            showTablePrivateDataSlotCreateFlagBitsEXT
-                            conNamePrivateDataSlotCreateFlagBitsEXT
-                            (\(PrivateDataSlotCreateFlagBitsEXT x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read PrivateDataSlotCreateFlagBitsEXT where
-  readPrec = enumReadPrec enumPrefixPrivateDataSlotCreateFlagBitsEXT
-                          showTablePrivateDataSlotCreateFlagBitsEXT
-                          conNamePrivateDataSlotCreateFlagBitsEXT
-                          PrivateDataSlotCreateFlagBitsEXT
+-- No documentation found for TopLevel "VkPhysicalDevicePrivateDataFeaturesEXT"
+type PhysicalDevicePrivateDataFeaturesEXT = PhysicalDevicePrivateDataFeatures
 
 
 type EXT_PRIVATE_DATA_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_private_data.hs-boot b/src/Vulkan/Extensions/VK_EXT_private_data.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_private_data.hs-boot
+++ /dev/null
@@ -1,170 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_private_data - device extension
---
--- == VK_EXT_private_data
---
--- [__Name String__]
---     @VK_EXT_private_data@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     296
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
--- [__Contact__]
---
---     -   Matthew Rusch
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_private_data] @mattruschnv%0A<<Here describe the issue or question you have about the VK_EXT_private_data extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-03-25
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Matthew Rusch, NVIDIA
---
---     -   Nuno Subtil, NVIDIA
---
---     -   Piers Daniell, NVIDIA
---
---     -   Jeff Bolz, NVIDIA
---
--- == Description
---
--- The \'VK_EXT_private_data\' extension is a device extension which
--- enables attaching arbitrary payloads to Vulkan objects. It introduces
--- the idea of private data slots as a means of storing a 64-bit unsigned
--- integer of application defined data. Private data slots can be created
--- or destroyed any time an associated device is available. Private data
--- slots can be reserved at device creation time, and limiting use to the
--- amount reserved will allow the extension to exhibit better performance
--- characteristics.
---
--- == New Object Types
---
--- -   'Vulkan.Extensions.Handles.PrivateDataSlotEXT'
---
--- == New Commands
---
--- -   'createPrivateDataSlotEXT'
---
--- -   'destroyPrivateDataSlotEXT'
---
--- -   'getPrivateDataEXT'
---
--- -   'setPrivateDataEXT'
---
--- == New Structures
---
--- -   'PrivateDataSlotCreateInfoEXT'
---
--- -   Extending 'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'DevicePrivateDataCreateInfoEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDevicePrivateDataFeaturesEXT'
---
--- == New Enums
---
--- -   'PrivateDataSlotCreateFlagBitsEXT'
---
--- == New Bitmasks
---
--- -   'PrivateDataSlotCreateFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_PRIVATE_DATA_EXTENSION_NAME'
---
--- -   'EXT_PRIVATE_DATA_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.ObjectType.ObjectType':
---
---     -   'Vulkan.Core10.Enums.ObjectType.OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT'
---
--- == Examples
---
--- -   In progress
---
--- == Version History
---
--- -   Revision 1, 2020-01-15 (Matthew Rusch)
---
---     -   Initial draft
---
--- == See Also
---
--- 'DevicePrivateDataCreateInfoEXT',
--- 'PhysicalDevicePrivateDataFeaturesEXT',
--- 'PrivateDataSlotCreateFlagBitsEXT', 'PrivateDataSlotCreateFlagsEXT',
--- 'PrivateDataSlotCreateInfoEXT',
--- 'Vulkan.Extensions.Handles.PrivateDataSlotEXT',
--- 'createPrivateDataSlotEXT', 'destroyPrivateDataSlotEXT',
--- 'getPrivateDataEXT', 'setPrivateDataEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_private_data 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_private_data  ( DevicePrivateDataCreateInfoEXT
-                                              , PhysicalDevicePrivateDataFeaturesEXT
-                                              , PrivateDataSlotCreateInfoEXT
-                                              ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data DevicePrivateDataCreateInfoEXT
-
-instance ToCStruct DevicePrivateDataCreateInfoEXT
-instance Show DevicePrivateDataCreateInfoEXT
-
-instance FromCStruct DevicePrivateDataCreateInfoEXT
-
-
-data PhysicalDevicePrivateDataFeaturesEXT
-
-instance ToCStruct PhysicalDevicePrivateDataFeaturesEXT
-instance Show PhysicalDevicePrivateDataFeaturesEXT
-
-instance FromCStruct PhysicalDevicePrivateDataFeaturesEXT
-
-
-data PrivateDataSlotCreateInfoEXT
-
-instance ToCStruct PrivateDataSlotCreateInfoEXT
-instance Show PrivateDataSlotCreateInfoEXT
-
-instance FromCStruct PrivateDataSlotCreateInfoEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs
--- a/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs
+++ b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs
@@ -176,7 +176,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -245,7 +245,7 @@
 --
 -- When 'PhysicalDeviceProvokingVertexFeaturesEXT' is in the @pNext@ chain
 -- of 'Vulkan.Core10.Device.DeviceCreateInfo' but the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback feature>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-transformFeedback transform feedback feature>
 -- is not enabled, the value of @transformFeedbackPreservesProvokingVertex@
 -- is ignored.
 --
@@ -266,7 +266,7 @@
     -- vertices within each primitive written by transform feedback will
     -- preserve the provoking vertex. This does not apply to triangle fan
     -- primitives when
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex transformFeedbackPreservesTriangleFanProvokingVertex>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-transformFeedbackPreservesTriangleFanProvokingVertex transformFeedbackPreservesTriangleFanProvokingVertex>
     -- is 'Vulkan.Core10.FundamentalTypes.FALSE'.
     -- @transformFeedbackPreservesProvokingVertex@ /must/ be
     -- 'Vulkan.Core10.FundamentalTypes.FALSE' when the
@@ -398,7 +398,7 @@
 -- will use the 'PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT' mode.
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-provokingVertexModePerPipeline provokingVertexModePerPipeline>
 -- limit is 'Vulkan.Core10.FundamentalTypes.FALSE', then all pipelines
 -- bound within a render pass instance /must/ have the same
 -- @provokingVertexMode@.
@@ -408,7 +408,7 @@
 -- -   #VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-04883#
 --     If @provokingVertexMode@ is 'PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT',
 --     then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-provokingVertexLast provokingVertexLast>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-provokingVertexLast provokingVertexLast>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -474,7 +474,7 @@
 -- = Description
 --
 -- These modes are described more precisely in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-primitive-topologies Primitive Topologies>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-primitive-topologies Primitive Topologies>.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_provoking_vertex.hs-boot
@@ -176,7 +176,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_provoking_vertex Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_queue_family_foreign.hs b/src/Vulkan/Extensions/VK_EXT_queue_family_foreign.hs
--- a/src/Vulkan/Extensions/VK_EXT_queue_family_foreign.hs
+++ b/src/Vulkan/Extensions/VK_EXT_queue_family_foreign.hs
@@ -98,7 +98,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_queue_family_foreign Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_queue_family_foreign Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs b/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs
--- a/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs
+++ b/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs
@@ -49,7 +49,7 @@
 -- This extension enables the
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16'
 -- format to be used without a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- enabled.
 --
 -- == New Structures
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_rgba10x6_formats Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_rgba10x6_formats Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -172,7 +172,7 @@
     -- @subresourceRange.aspectMask@ equal to
     -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' without
     -- a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
     -- enabled.
     formatRgba10x6WithoutYCbCrSampler :: Bool }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs-boot b/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_rgba10x6_formats.hs-boot
@@ -49,7 +49,7 @@
 -- This extension enables the
 -- 'Vulkan.Core10.Enums.Format.FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16'
 -- format to be used without a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
 -- enabled.
 --
 -- == New Structures
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_rgba10x6_formats Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_rgba10x6_formats Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_robustness2.hs b/src/Vulkan/Extensions/VK_EXT_robustness2.hs
--- a/src/Vulkan/Extensions/VK_EXT_robustness2.hs
+++ b/src/Vulkan/Extensions/VK_EXT_robustness2.hs
@@ -48,9 +48,9 @@
 -- return zero. Rather than allowing multiple possible (0,0,0,x) vectors,
 -- the out of bounds values are treated as zero, and then missing
 -- components are inserted based on the format as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>.
 --
 -- These additional requirements /may/ be expensive on some
 -- implementations, and should only be enabled when truly necessary.
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -175,10 +175,10 @@
 --     of the descriptor. Uniform buffers /must/ be bounds-checked to the
 --     range of the descriptor, where the range is rounded up to a multiple
 --     of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustUniformBufferAccessSizeAlignment robustUniformBufferAccessSizeAlignment>.
 --     Storage buffers /must/ be bounds-checked to the range of the
 --     descriptor, where the range is rounded up to a multiple of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-robustStorageBufferAccessSizeAlignment robustStorageBufferAccessSizeAlignment>.
 --     Out of bounds buffer loads will return zero values, and formatted
 --     loads will have (0,0,1) values inserted for missing G, B, or A
 --     components based on the format.
@@ -210,7 +210,7 @@
 --
 -- -   #VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000#
 --     If @robustBufferAccess2@ is enabled then
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess robustBufferAccess>
 --     /must/ also be enabled
 --
 -- == Valid Usage (Implicit)
@@ -303,14 +303,14 @@
     -- @robustStorageBufferAccessSizeAlignment@ is the number of bytes that the
     -- range of a storage buffer descriptor is rounded up to when used for
     -- bounds-checking when
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     -- is enabled. This value /must/ be either 1 or 4.
     robustStorageBufferAccessSizeAlignment :: DeviceSize
   , -- | #limits-robustUniformBufferAccessSizeAlignment#
     -- @robustUniformBufferAccessSizeAlignment@ is the number of bytes that the
     -- range of a uniform buffer descriptor is rounded up to when used for
     -- bounds-checking when
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-robustBufferAccess2 robustBufferAccess2>
     -- is enabled. This value /must/ be a power of two in the range [1, 256].
     robustUniformBufferAccessSizeAlignment :: DeviceSize
   }
diff --git a/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot b/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_robustness2.hs-boot
@@ -48,9 +48,9 @@
 -- return zero. Rather than allowing multiple possible (0,0,0,x) vectors,
 -- the out of bounds values are treated as zero, and then missing
 -- components are inserted based on the format as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-conversion-to-rgba Conversion to RGBA>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fxvertex-input-extraction vertex input attribute extraction>.
 --
 -- These additional requirements /may/ be expensive on some
 -- implementations, and should only be enabled when truly necessary.
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_robustness2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
--- a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
+++ b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs
@@ -163,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs-boot b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_sample_locations.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_sample_locations.hs-boot
@@ -163,7 +163,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_sample_locations Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs b/src/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs
--- a/src/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs
+++ b/src/Vulkan/Extensions/VK_EXT_sampler_filter_minmax.hs
@@ -131,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_sampler_filter_minmax Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_sampler_filter_minmax Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_scalar_block_layout.hs b/src/Vulkan/Extensions/VK_EXT_scalar_block_layout.hs
--- a/src/Vulkan/Extensions/VK_EXT_scalar_block_layout.hs
+++ b/src/Vulkan/Extensions/VK_EXT_scalar_block_layout.hs
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_scalar_block_layout Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_scalar_block_layout Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_separate_stencil_usage.hs b/src/Vulkan/Extensions/VK_EXT_separate_stencil_usage.hs
--- a/src/Vulkan/Extensions/VK_EXT_separate_stencil_usage.hs
+++ b/src/Vulkan/Extensions/VK_EXT_separate_stencil_usage.hs
@@ -90,7 +90,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_separate_stencil_usage Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_separate_stencil_usage Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs
@@ -79,9 +79,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
 --
 -- == Version History
 --
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float.hs-boot
@@ -79,9 +79,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32AddEXT AtomicFloat32AddEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64AddEXT AtomicFloat64AddEXT>
 --
 -- == Version History
 --
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs
@@ -97,13 +97,13 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
 --
 -- == Version History
 --
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_atomic_float2.hs-boot
@@ -97,13 +97,13 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16AddEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat16MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat32MinMaxEXT AtomicFloat32MinMaxEXT>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-AtomicFloat64MinMaxEXT AtomicFloat64MinMaxEXT>
 --
 -- == Version History
 --
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_atomic_float2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Jeff Bolz
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2019-06-01
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -58,7 +67,7 @@
 -- The demoted invocation will have no further side effects and will not
 -- output to the framebuffer, but remains active and can participate in
 -- computing derivatives and in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>.
 -- This is a better match for the “discard” instruction in HLSL.
 --
 -- == New Structures
@@ -77,12 +86,18 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT'
 --
 -- == New SPIR-V Capability
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DemoteToHelperInvocationEXT DemoteToHelperInvocationEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DemoteToHelperInvocationEXT DemoteToHelperInvocationEXT>
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-06-01 (Jeff Bolz)
@@ -96,108 +111,27 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_demote_to_helper_invocation Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_demote_to_helper_invocation 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_shader_demote_to_helper_invocation  ( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT
+                                                                    , PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
                                                                     , EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION
                                                                     , pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION
                                                                     , EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME
                                                                     , pattern EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME
                                                                     ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT))
--- | VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - Structure
--- describing the shader demote to helper invocations features that can be
--- supported by an implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'
--- structure is included in the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
--- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_demote_to_helper_invocation VK_EXT_shader_demote_to_helper_invocation>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-  { -- | #features-shaderDemoteToHelperInvocation#
-    -- @shaderDemoteToHelperInvocation@ indicates whether the implementation
-    -- supports the SPIR-V @DemoteToHelperInvocationEXT@ capability.
-    shaderDemoteToHelperInvocation :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
+import Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeatures)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
 
-instance ToCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderDemoteToHelperInvocation))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where
-  peekCStruct p = do
-    shaderDemoteToHelperInvocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-             (bool32ToBool shaderDemoteToHelperInvocation)
-
-instance Storable PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT where
-  zero = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"
+type PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = PhysicalDeviceShaderDemoteToHelperInvocationFeatures
 
 
 type EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_shader_demote_to_helper_invocation.hs-boot
+++ /dev/null
@@ -1,115 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_shader_demote_to_helper_invocation - device extension
---
--- == VK_EXT_shader_demote_to_helper_invocation
---
--- [__Name String__]
---     @VK_EXT_shader_demote_to_helper_invocation@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     277
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Jeff Bolz
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_shader_demote_to_helper_invocation] @jeffbolznv%0A<<Here describe the issue or question you have about the VK_EXT_shader_demote_to_helper_invocation extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2019-06-01
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension requires
---         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>
---
---     -   This extension provides API support for
---         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_demote_to_helper_invocation.txt GL_EXT_demote_to_helper_invocation>
---
--- [__Contributors__]
---
---     -   Jeff Bolz, NVIDIA
---
--- == Description
---
--- This extension adds Vulkan support for the
--- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/EXT/SPV_EXT_demote_to_helper_invocation.html SPV_EXT_demote_to_helper_invocation>
--- SPIR-V extension. That SPIR-V extension provides a new instruction
--- @OpDemoteToHelperInvocationEXT@ allowing shaders to “demote” a fragment
--- shader invocation to behave like a helper invocation for its duration.
--- The demoted invocation will have no further side effects and will not
--- output to the framebuffer, but remains active and can participate in
--- computing derivatives and in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>.
--- This is a better match for the “discard” instruction in HLSL.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME'
---
--- -   'EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT'
---
--- == New SPIR-V Capability
---
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DemoteToHelperInvocationEXT DemoteToHelperInvocationEXT>
---
--- == Version History
---
--- -   Revision 1, 2019-06-01 (Jeff Bolz)
---
---     -   Initial draft
---
--- == See Also
---
--- 'PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_demote_to_helper_invocation 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_shader_demote_to_helper_invocation  (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-
-instance ToCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-instance Show PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-
-instance FromCStruct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_shader_image_atomic_int64.hs-boot
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_image_atomic_int64 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_stencil_export.hs b/src/Vulkan/Extensions/VK_EXT_shader_stencil_export.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_stencil_export.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_stencil_export.hs
@@ -77,7 +77,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_stencil_export Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_stencil_export Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_ballot.hs
@@ -133,7 +133,7 @@
 -- Vulkan 1.1 required the @OpGroupNonUniformBroadcast@ “Id” to be
 -- constant. This restriction was removed in Vulkan 1.2 with the addition
 -- of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroupBroadcastDynamicId subgroupBroadcastDynamicId>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-subgroupBroadcastDynamicId subgroupBroadcastDynamicId>
 -- feature.
 --
 -- == New Enum Constants
@@ -144,23 +144,23 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgeq SubgroupEqMaskKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgeq SubgroupEqMaskKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgge SubgroupGeMaskKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgge SubgroupGeMaskKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sggt SubgroupGtMaskKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sggt SubgroupGtMaskKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgle SubgroupLeMaskKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgle SubgroupLeMaskKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sglt SubgroupLtMaskKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sglt SubgroupLtMaskKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgli SubgroupLocalInvocationId>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgli SubgroupLocalInvocationId>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-sgs SubgroupSize>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-SubgroupBallotKHR SubgroupBallotKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SubgroupBallotKHR SubgroupBallotKHR>
 --
 -- == Version History
 --
@@ -175,7 +175,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_subgroup_ballot Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_subgroup_ballot Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_subgroup_vote.hs b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_vote.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_subgroup_vote.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_subgroup_vote.hs
@@ -144,7 +144,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-SubgroupVoteKHR SubgroupVoteKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SubgroupVoteKHR SubgroupVoteKHR>
 --
 -- == Version History
 --
@@ -159,7 +159,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_subgroup_vote Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_subgroup_vote Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_shader_viewport_index_layer.hs b/src/Vulkan/Extensions/VK_EXT_shader_viewport_index_layer.hs
--- a/src/Vulkan/Extensions/VK_EXT_shader_viewport_index_layer.hs
+++ b/src/Vulkan/Extensions/VK_EXT_shader_viewport_index_layer.hs
@@ -96,13 +96,13 @@
 --
 -- The single @ShaderViewportIndexLayerEXT@ capability from the
 -- @SPV_EXT_shader_viewport_index_layer@ extension is replaced by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndex ShaderViewportIndex>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndex ShaderViewportIndex>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderLayer ShaderLayer>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderLayer ShaderLayer>
 -- capabilities from SPIR-V 1.5 which are enabled by the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputLayer shaderOutputLayer>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputLayer shaderOutputLayer>
 -- features, respectively. Additionally, if Vulkan 1.2 is supported but
 -- this extension is not, these capabilities are optional.
 --
@@ -118,14 +118,14 @@
 -- == New or Modified Built-In Variables
 --
 -- -   (modified)
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>
 --
 -- -   (modified)
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerEXT ShaderViewportIndexLayerEXT>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerEXT ShaderViewportIndexLayerEXT>
 --
 -- == Version History
 --
@@ -140,7 +140,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_shader_viewport_index_layer Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_shader_viewport_index_layer Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs b/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
--- a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
+++ b/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs
@@ -21,6 +21,11 @@
 --
 --     -   Requires Vulkan 1.1
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Neil Henning
@@ -31,6 +36,10 @@
 -- [__Last Modified Date__]
 --     2019-03-05
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__Contributors__]
 --
 --     -   Jeff Bolz, NVIDIA
@@ -76,20 +85,20 @@
 -- enable that pipeline to vary its subgroup size. If enabled, any
 -- @SubgroupSize@ decorated variables in the SPIR-V shader modules provided
 -- to pipeline creation /may/ vary between the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSubgroupSize minimum>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minSubgroupSize minimum>
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubgroupSize maximum>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxSubgroupSize maximum>
 -- subgroup sizes.
 --
 -- An implementation is also optionally allowed to support specifying a
 -- required subgroup size for a given pipeline stage. Implementations
 -- advertise which
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages stages support a required subgroup size>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages stages support a required subgroup size>,
 -- and any pipeline of a supported stage can be passed a
 -- 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' structure to set
 -- the subgroup size for that shader stage of the pipeline. For compute
 -- shaders, this requires the developer to query the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
 -- and ensure that:
 --
 -- \[s = { WorkGroupSize.x \times WorkGroupSize.y \times WorkgroupSize.z \leq SubgroupSize \times maxComputeWorkgroupSubgroups }\]
@@ -125,18 +134,24 @@
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
+--     -   'PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
 --
---     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
+--     -   'PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT'
+--     -   'STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-03-05 (Neil Henning)
@@ -157,319 +172,65 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_subgroup_size_control 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_subgroup_size_control  ( PhysicalDeviceSubgroupSizeControlFeaturesEXT(..)
-                                                       , PhysicalDeviceSubgroupSizeControlPropertiesEXT(..)
-                                                       , PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(..)
+module Vulkan.Extensions.VK_EXT_subgroup_size_control  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT
+                                                       , pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT
+                                                       , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT
+                                                       , pattern PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT
+                                                       , pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT
+                                                       , PhysicalDeviceSubgroupSizeControlFeaturesEXT
+                                                       , PhysicalDeviceSubgroupSizeControlPropertiesEXT
+                                                       , PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
                                                        , EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION
                                                        , pattern EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION
                                                        , EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME
                                                        , pattern EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME
                                                        ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.ShaderStageFlagBits (ShaderStageFlags)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT))
--- | VkPhysicalDeviceSubgroupSizeControlFeaturesEXT - Structure describing
--- the subgroup size control features that can be supported by an
--- implementation
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' 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. 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' /can/ also be
--- used in the @pNext@ chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to
--- selectively enable these features.
---
--- Note
---
--- The 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure was added
--- in version 2 of the @VK_EXT_subgroup_size_control@ extension. Version 1
--- implementations of this extension will not fill out the features
--- structure but applications may assume that both @subgroupSizeControl@
--- and @computeFullSubgroups@ are supported if the extension is supported.
--- (See also the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-requirements Feature Requirements>
--- section.) Applications are advised to add a
--- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT' structure to the @pNext@
--- chain of 'Vulkan.Core10.Device.DeviceCreateInfo' to enable the features
--- regardless of the version of the extension supported by the
--- implementation. If the implementation only supports version 1, it will
--- safely ignore the 'PhysicalDeviceSubgroupSizeControlFeaturesEXT'
--- structure.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control VK_EXT_subgroup_size_control>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeaturesEXT
-  { -- | #features-subgroupSizeControl# @subgroupSizeControl@ indicates whether
-    -- the implementation supports controlling shader subgroup sizes via the
-    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
-    -- flag and the 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
-    -- structure.
-    subgroupSizeControl :: Bool
-  , -- | #features-computeFullSubgroups# @computeFullSubgroups@ indicates whether
-    -- the implementation supports requiring full subgroups in compute shaders
-    -- via the
-    -- 'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
-    -- flag.
-    computeFullSubgroups :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceSubgroupSizeControlFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceSubgroupSizeControlFeaturesEXT
+import Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlFeatures)
+import Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PhysicalDeviceSubgroupSizeControlProperties)
+import Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control (PipelineShaderStageRequiredSubgroupSizeCreateInfo)
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT))
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlags)
+import Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits (PipelineShaderStageCreateFlagBits(PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES
 
-instance ToCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceSubgroupSizeControlFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (subgroupSizeControl))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (computeFullSubgroups))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT where
-  peekCStruct p = do
-    subgroupSizeControl <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    computeFullSubgroups <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ PhysicalDeviceSubgroupSizeControlFeaturesEXT
-             (bool32ToBool subgroupSizeControl) (bool32ToBool computeFullSubgroups)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT"
+pattern STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO
 
-instance Storable PhysicalDeviceSubgroupSizeControlFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceSubgroupSizeControlFeaturesEXT where
-  zero = PhysicalDeviceSubgroupSizeControlFeaturesEXT
-           zero
-           zero
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES
 
 
--- | VkPhysicalDeviceSubgroupSizeControlPropertiesEXT - Structure describing
--- the control subgroup size properties of an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceSubgroupSizeControlPropertiesEXT' 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.
---
--- If
--- 'Vulkan.Core11.Originally_Based_On_VK_KHR_subgroup.PhysicalDeviceSubgroupProperties'::@supportedOperations@
--- includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subgroup-quad >,
--- @minSubgroupSize@ /must/ be greater than or equal to 4.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control VK_EXT_subgroup_size_control>,
--- 'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlags',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlPropertiesEXT
-  { -- | #limits-minSubgroupSize# @minSubgroupSize@ is the minimum subgroup size
-    -- supported by this device. @minSubgroupSize@ is at least one if any of
-    -- the physical device’s queues support
-    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
-    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @minSubgroupSize@
-    -- is a power-of-two. @minSubgroupSize@ is less than or equal to
-    -- @maxSubgroupSize@. @minSubgroupSize@ is less than or equal to
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
-    minSubgroupSize :: Word32
-  , -- | #limits-maxSubgroupSize# @maxSubgroupSize@ is the maximum subgroup size
-    -- supported by this device. @maxSubgroupSize@ is at least one if any of
-    -- the physical device’s queues support
-    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
-    -- 'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT'. @maxSubgroupSize@
-    -- is a power-of-two. @maxSubgroupSize@ is greater than or equal to
-    -- @minSubgroupSize@. @maxSubgroupSize@ is greater than or equal to
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-subgroup-size subgroupSize>.
-    maxSubgroupSize :: Word32
-  , -- | #limits-maxComputeWorkgroupSubgroups# @maxComputeWorkgroupSubgroups@ is
-    -- the maximum number of subgroups supported by the implementation within a
-    -- workgroup.
-    maxComputeWorkgroupSubgroups :: Word32
-  , -- | #limits-requiredSubgroupSizeStages# @requiredSubgroupSizeStages@ is a
-    -- bitfield of what shader stages support having a required subgroup size
-    -- specified.
-    requiredSubgroupSizeStages :: ShaderStageFlags
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceSubgroupSizeControlPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceSubgroupSizeControlPropertiesEXT
+-- No documentation found for TopLevel "VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT"
+pattern PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
 
-instance ToCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceSubgroupSizeControlPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (minSubgroupSize)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (maxSubgroupSize)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (maxComputeWorkgroupSubgroups)
-    poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (requiredSubgroupSizeStages)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr ShaderStageFlags)) (zero)
-    f
 
-instance FromCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT where
-  peekCStruct p = do
-    minSubgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    maxSubgroupSize <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    maxComputeWorkgroupSubgroups <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    requiredSubgroupSizeStages <- peek @ShaderStageFlags ((p `plusPtr` 28 :: Ptr ShaderStageFlags))
-    pure $ PhysicalDeviceSubgroupSizeControlPropertiesEXT
-             minSubgroupSize maxSubgroupSize maxComputeWorkgroupSubgroups requiredSubgroupSizeStages
+-- No documentation found for TopLevel "VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT"
+pattern PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
 
-instance Storable PhysicalDeviceSubgroupSizeControlPropertiesEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceSubgroupSizeControlPropertiesEXT where
-  zero = PhysicalDeviceSubgroupSizeControlPropertiesEXT
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT"
+type PhysicalDeviceSubgroupSizeControlFeaturesEXT = PhysicalDeviceSubgroupSizeControlFeatures
 
 
--- | VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - Structure
--- specifying the required subgroup size of a newly created pipeline shader
--- stage
---
--- = Description
---
--- If a 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' structure is
--- included in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo', it specifies
--- that the pipeline shader stage being compiled has a required subgroup
--- size.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control VK_EXT_subgroup_size_control>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-  { -- | #pipelines-required-subgroup-size# @requiredSubgroupSize@ is an unsigned
-    -- integer value specifying the required subgroup size for the newly
-    -- created pipeline shader stage.
-    --
-    -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760#
-    -- @requiredSubgroupSize@ /must/ be a power-of-two integer
-    --
-    -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761#
-    -- @requiredSubgroupSize@ /must/ be greater or equal to
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSubgroupSize minSubgroupSize>
-    --
-    -- #VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762#
-    -- @requiredSubgroupSize@ /must/ be less than or equal to
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubgroupSize maxSubgroupSize>
-    requiredSubgroupSize :: Word32 }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT)
-#endif
-deriving instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
+-- No documentation found for TopLevel "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT"
+type PhysicalDeviceSubgroupSizeControlPropertiesEXT = PhysicalDeviceSubgroupSizeControlProperties
 
-instance ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (requiredSubgroupSize)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    f
 
-instance FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where
-  peekCStruct p = do
-    requiredSubgroupSize <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pure $ PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-             requiredSubgroupSize
-
-instance Storable PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT where
-  zero = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-           zero
+-- No documentation found for TopLevel "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT"
+type PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = PipelineShaderStageRequiredSubgroupSizeCreateInfo
 
 
 type EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION = 2
diff --git a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs-boot b/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_subgroup_size_control.hs-boot
+++ /dev/null
@@ -1,195 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_subgroup_size_control - device extension
---
--- == VK_EXT_subgroup_size_control
---
--- [__Name String__]
---     @VK_EXT_subgroup_size_control@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     226
---
--- [__Revision__]
---     2
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.1
---
--- [__Contact__]
---
---     -   Neil Henning
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_subgroup_size_control] @sheredom%0A<<Here describe the issue or question you have about the VK_EXT_subgroup_size_control extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2019-03-05
---
--- [__Contributors__]
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Jason Ekstrand, Intel
---
---     -   Sławek Grajewski, Intel
---
---     -   Jesse Hall, Google
---
---     -   Neil Henning, AMD
---
---     -   Daniel Koch, NVIDIA
---
---     -   Jeff Leger, Qualcomm
---
---     -   Graeme Leese, Broadcom
---
---     -   Allan MacKinnon, Google
---
---     -   Mariusz Merecki, Intel
---
---     -   Graham Wihlidal, Electronic Arts
---
--- == Description
---
--- This extension enables an implementation to control the subgroup size by
--- allowing a varying subgroup size and also specifying a required subgroup
--- size.
---
--- It extends the subgroup support in Vulkan 1.1 to allow an implementation
--- to expose a varying subgroup size. Previously Vulkan exposed a single
--- subgroup size per physical device, with the expectation that
--- implementations will behave as if all subgroups have the same size. Some
--- implementations /may/ dispatch shaders with a varying subgroup size for
--- different subgroups. As a result they could implicitly split a large
--- subgroup into smaller subgroups or represent a small subgroup as a
--- larger subgroup, some of whose invocations were inactive on launch.
---
--- To aid developers in understanding the performance characteristics of
--- their programs, this extension exposes a minimum and maximum subgroup
--- size that a physical device supports and a pipeline create flag to
--- enable that pipeline to vary its subgroup size. If enabled, any
--- @SubgroupSize@ decorated variables in the SPIR-V shader modules provided
--- to pipeline creation /may/ vary between the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minSubgroupSize minimum>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxSubgroupSize maximum>
--- subgroup sizes.
---
--- An implementation is also optionally allowed to support specifying a
--- required subgroup size for a given pipeline stage. Implementations
--- advertise which
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-requiredSubgroupSizeStages stages support a required subgroup size>,
--- and any pipeline of a supported stage can be passed a
--- 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT' structure to set
--- the subgroup size for that shader stage of the pipeline. For compute
--- shaders, this requires the developer to query the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxComputeWorkgroupSubgroups maxComputeWorkgroupSubgroups>
--- and ensure that:
---
--- \[s = { WorkGroupSize.x \times WorkGroupSize.y \times WorkgroupSize.z \leq SubgroupSize \times maxComputeWorkgroupSubgroups }\]
---
--- Developers can also specify a new pipeline shader stage create flag that
--- requires the implementation to have fully populated subgroups within
--- local workgroups. This requires the workgroup size in the X dimension to
--- be a multiple of the subgroup size.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceSubgroupSizeControlFeaturesEXT'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceSubgroupSizeControlPropertiesEXT'
---
--- -   Extending 'Vulkan.Core10.Pipeline.PipelineShaderStageCreateInfo':
---
---     -   'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
---
--- == New Enum Constants
---
--- -   'EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME'
---
--- -   'EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PipelineShaderStageCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT'
---
---     -   'Vulkan.Core10.Enums.PipelineShaderStageCreateFlagBits.PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT'
---
--- == Version History
---
--- -   Revision 1, 2019-03-05 (Neil Henning)
---
---     -   Initial draft
---
--- -   Revision 2, 2019-07-26 (Jason Ekstrand)
---
---     -   Add the missing 'PhysicalDeviceSubgroupSizeControlFeaturesEXT'
---         for querying subgroup size control features.
---
--- == See Also
---
--- 'PhysicalDeviceSubgroupSizeControlFeaturesEXT',
--- 'PhysicalDeviceSubgroupSizeControlPropertiesEXT',
--- 'PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_subgroup_size_control 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_subgroup_size_control  ( PhysicalDeviceSubgroupSizeControlFeaturesEXT
-                                                       , PhysicalDeviceSubgroupSizeControlPropertiesEXT
-                                                       , PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-                                                       ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceSubgroupSizeControlFeaturesEXT
-
-instance ToCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT
-instance Show PhysicalDeviceSubgroupSizeControlFeaturesEXT
-
-instance FromCStruct PhysicalDeviceSubgroupSizeControlFeaturesEXT
-
-
-data PhysicalDeviceSubgroupSizeControlPropertiesEXT
-
-instance ToCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT
-instance Show PhysicalDeviceSubgroupSizeControlPropertiesEXT
-
-instance FromCStruct PhysicalDeviceSubgroupSizeControlPropertiesEXT
-
-
-data PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-
-instance ToCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-instance Show PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-
-instance FromCStruct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs b/src/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs
--- a/src/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs
+++ b/src/Vulkan/Extensions/VK_EXT_swapchain_colorspace.hs
@@ -133,7 +133,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_swapchain_colorspace Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_swapchain_colorspace Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
--- a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
+++ b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Jeff Bolz
@@ -33,10 +38,14 @@
 -- [__Last Modified Date__]
 --     2019-06-06
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
--- [__Interactions and External Dependencies__; __Contributors__]
+-- [__Contributors__]
 --
 --     -   Jeff Bolz, NVIDIA
 --
@@ -70,8 +79,15 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. However, only the properties structure is promoted.
+-- The feature structure is not promoted. The original type name is still
+-- available as an alias of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-06-06 (Jeff Bolz)
@@ -86,12 +102,13 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment 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_texel_buffer_alignment  ( PhysicalDeviceTexelBufferAlignmentFeaturesEXT(..)
-                                                        , PhysicalDeviceTexelBufferAlignmentPropertiesEXT(..)
+module Vulkan.Extensions.VK_EXT_texel_buffer_alignment  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT
+                                                        , PhysicalDeviceTexelBufferAlignmentFeaturesEXT(..)
+                                                        , PhysicalDeviceTexelBufferAlignmentPropertiesEXT
                                                         , EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION
                                                         , pattern EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION
                                                         , EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME
@@ -118,10 +135,14 @@
 import Vulkan.Core10.FundamentalTypes (bool32ToBool)
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment (PhysicalDeviceTexelBufferAlignmentProperties)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES
+
+
 -- | VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT - Structure describing
 -- the texel buffer alignment features that can be supported by an
 -- implementation
@@ -152,7 +173,9 @@
 data PhysicalDeviceTexelBufferAlignmentFeaturesEXT = PhysicalDeviceTexelBufferAlignmentFeaturesEXT
   { -- | #features-texelBufferAlignment# @texelBufferAlignment@ indicates whether
     -- the implementation uses more specific alignment requirements advertised
-    -- in 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT' rather than
+    -- in
+    -- 'Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment.PhysicalDeviceTexelBufferAlignmentProperties'
+    -- rather than
     -- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@.
     texelBufferAlignment :: Bool }
   deriving (Typeable, Eq)
@@ -193,114 +216,8 @@
            zero
 
 
--- | VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT - Structure describing
--- the texel buffer alignment requirements supported by an implementation
---
--- = Description
---
--- If the 'PhysicalDeviceTexelBufferAlignmentPropertiesEXT' 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.
---
--- If the single texel alignment property is
--- 'Vulkan.Core10.FundamentalTypes.FALSE', then the buffer view’s offset
--- /must/ be aligned to the corresponding byte alignment value. If the
--- single texel alignment property is
--- 'Vulkan.Core10.FundamentalTypes.TRUE', then the buffer view’s offset
--- /must/ be aligned to the lesser of the corresponding byte alignment
--- value or the size of a single texel, based on
--- 'Vulkan.Core10.BufferView.BufferViewCreateInfo'::@format@. If the size
--- of a single texel is a multiple of three bytes, then the size of a
--- single component of the format is used instead.
---
--- These limits /must/ not advertise a larger alignment than the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-required required>
--- maximum minimum value of
--- 'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@minTexelBufferOffsetAlignment@,
--- for any format that supports use as a texel buffer.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment VK_EXT_texel_buffer_alignment>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-  { -- | #limits-storageTexelBufferOffsetAlignmentBytes#
-    -- @storageTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
-    -- sufficient for a storage texel buffer of any format. The value /must/ be
-    -- a power of two.
-    storageTexelBufferOffsetAlignmentBytes :: DeviceSize
-  , -- | #limits-storageTexelBufferOffsetSingleTexelAlignment#
-    -- @storageTexelBufferOffsetSingleTexelAlignment@ indicates whether single
-    -- texel alignment is sufficient for a storage texel buffer of any format.
-    -- The value /must/ be a power of two.
-    storageTexelBufferOffsetSingleTexelAlignment :: Bool
-  , -- | #limits-uniformTexelBufferOffsetAlignmentBytes#
-    -- @uniformTexelBufferOffsetAlignmentBytes@ is a byte alignment that is
-    -- sufficient for a uniform texel buffer of any format. The value /must/ be
-    -- a power of two.
-    uniformTexelBufferOffsetAlignmentBytes :: DeviceSize
-  , -- | #limits-uniformTexelBufferOffsetSingleTexelAlignment#
-    -- @uniformTexelBufferOffsetSingleTexelAlignment@ indicates whether single
-    -- texel alignment is sufficient for a uniform texel buffer of any format.
-    -- The value /must/ be a power of two.
-    uniformTexelBufferOffsetSingleTexelAlignment :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceTexelBufferAlignmentPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-
-instance ToCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceTexelBufferAlignmentPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (storageTexelBufferOffsetAlignmentBytes)
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (storageTexelBufferOffsetSingleTexelAlignment))
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (uniformTexelBufferOffsetAlignmentBytes)
-    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (uniformTexelBufferOffsetSingleTexelAlignment))
-    f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT where
-  peekCStruct p = do
-    storageTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    storageTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    uniformTexelBufferOffsetAlignmentBytes <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    uniformTexelBufferOffsetSingleTexelAlignment <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
-    pure $ PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-             storageTexelBufferOffsetAlignmentBytes (bool32ToBool storageTexelBufferOffsetSingleTexelAlignment) uniformTexelBufferOffsetAlignmentBytes (bool32ToBool uniformTexelBufferOffsetSingleTexelAlignment)
-
-instance Storable PhysicalDeviceTexelBufferAlignmentPropertiesEXT where
-  sizeOf ~_ = 48
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceTexelBufferAlignmentPropertiesEXT where
-  zero = PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-           zero
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT"
+type PhysicalDeviceTexelBufferAlignmentPropertiesEXT = PhysicalDeviceTexelBufferAlignmentProperties
 
 
 type EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs-boot b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_texel_buffer_alignment.hs-boot
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Jeff Bolz
@@ -33,10 +38,14 @@
 -- [__Last Modified Date__]
 --     2019-06-06
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
--- [__Interactions and External Dependencies__; __Contributors__]
+-- [__Contributors__]
 --
 --     -   Jeff Bolz, NVIDIA
 --
@@ -70,8 +79,15 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. However, only the properties structure is promoted.
+-- The feature structure is not promoted. The original type name is still
+-- available as an alias of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-06-06 (Jeff Bolz)
@@ -86,13 +102,11 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_texel_buffer_alignment 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_texel_buffer_alignment  ( PhysicalDeviceTexelBufferAlignmentFeaturesEXT
-                                                        , PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-                                                        ) where
+module Vulkan.Extensions.VK_EXT_texel_buffer_alignment  (PhysicalDeviceTexelBufferAlignmentFeaturesEXT) where
 
 import Vulkan.CStruct (FromCStruct)
 import Vulkan.CStruct (ToCStruct)
@@ -104,12 +118,4 @@
 instance Show PhysicalDeviceTexelBufferAlignmentFeaturesEXT
 
 instance FromCStruct PhysicalDeviceTexelBufferAlignmentFeaturesEXT
-
-
-data PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-
-instance ToCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-instance Show PhysicalDeviceTexelBufferAlignmentPropertiesEXT
-
-instance FromCStruct PhysicalDeviceTexelBufferAlignmentPropertiesEXT
 
diff --git a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
--- a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
+++ b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Jan-Harald Fredriksen
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2019-05-28
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known issues.
 --
@@ -47,7 +56,7 @@
 --
 -- When this extension is enabled, the HDR profile is supported for all
 -- ASTC formats listed in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>.
 --
 -- == New Structures
 --
@@ -65,38 +74,46 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Format.Format':
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT'
+--     -   'FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. Functionality in this
+-- extension is included in core Vulkan 1.3, with the EXT suffix omitted.
+-- However, the feature is made optional in Vulkan 1.3. The original type,
+-- enum and command names are still available as aliases of the core
+-- functionality.
+--
 -- == Issues
 --
 -- 1) Should we add a feature or limit for this functionality?
@@ -136,148 +153,111 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texture_compression_astc_hdr Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_texture_compression_astc_hdr 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_texture_compression_astc_hdr  ( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_texture_compression_astc_hdr  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT
+                                                              , pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT
+                                                              , pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT
+                                                              , PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
                                                               , EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION
                                                               , pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION
                                                               , EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME
                                                               , pattern EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME
                                                               ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT))
--- | VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - Structure
--- describing ASTC HDR features that can be supported by an implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT' 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. 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT' /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_texture_compression_astc_hdr VK_EXT_texture_compression_astc_hdr>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
-  { -- | #features-textureCompressionASTC_HDR# @textureCompressionASTC_HDR@
-    -- indicates whether all of the ASTC HDR compressed texture formats are
-    -- supported. If this feature is enabled, then the
-    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_BIT',
-    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
-    -- and
-    -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
-    -- features /must/ be supported in @optimalTilingFeatures@ for the
-    -- following formats:
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT'
-    --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT'
-    --
-    -- To query for additional properties, or if the feature is not enabled,
-    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'
-    -- and
-    -- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'
-    -- /can/ be used to check for supported properties of individual formats as
-    -- normal.
-    textureCompressionASTC_HDR :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT)
-#endif
-deriving instance Show PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
+import Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr (PhysicalDeviceTextureCompressionASTCHDRFeatures)
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_10x10_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_10x5_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_10x6_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_10x8_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_12x10_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_12x12_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_4x4_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_5x4_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_5x5_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_6x5_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_6x6_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_8x5_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_8x6_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_ASTC_8x8_SFLOAT_BLOCK))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
 
-instance ToCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (textureCompressionASTC_HDR))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where
-  peekCStruct p = do
-    textureCompressionASTC_HDR <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
-             (bool32ToBool textureCompressionASTC_HDR)
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = FORMAT_ASTC_4x4_SFLOAT_BLOCK
 
-instance Storable PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT where
-  zero = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
-           zero
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = FORMAT_ASTC_5x4_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = FORMAT_ASTC_5x5_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = FORMAT_ASTC_6x5_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = FORMAT_ASTC_6x6_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = FORMAT_ASTC_8x5_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = FORMAT_ASTC_8x6_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = FORMAT_ASTC_8x8_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = FORMAT_ASTC_10x5_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = FORMAT_ASTC_10x6_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = FORMAT_ASTC_10x8_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = FORMAT_ASTC_10x10_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = FORMAT_ASTC_12x10_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT"
+pattern FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = FORMAT_ASTC_12x12_SFLOAT_BLOCK
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT"
+type PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT = PhysicalDeviceTextureCompressionASTCHDRFeatures
 
 
 type EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs-boot b/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_texture_compression_astc_hdr.hs-boot
+++ /dev/null
@@ -1,155 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_texture_compression_astc_hdr - device extension
---
--- == VK_EXT_texture_compression_astc_hdr
---
--- [__Name String__]
---     @VK_EXT_texture_compression_astc_hdr@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     67
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Jan-Harald Fredriksen
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_texture_compression_astc_hdr] @janharaldfredriksen-arm%0A<<Here describe the issue or question you have about the VK_EXT_texture_compression_astc_hdr extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2019-05-28
---
--- [__IP Status__]
---     No known issues.
---
--- [__Contributors__]
---
---     -   Jan-Harald Fredriksen, Arm
---
--- == Description
---
--- This extension adds support for textures compressed using the Adaptive
--- Scalable Texture Compression (ASTC) High Dynamic Range (HDR) profile.
---
--- When this extension is enabled, the HDR profile is supported for all
--- ASTC formats listed in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#appendix-compressedtex-astc ASTC Compressed Image Formats>.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'
---
--- == New Enum Constants
---
--- -   'EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME'
---
--- -   'EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.Format.Format':
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT'
---
---     -   'Vulkan.Core10.Enums.Format.FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT'
---
--- == Issues
---
--- 1) Should we add a feature or limit for this functionality?
---
--- Yes. It is consistent with the ASTC LDR support to add a feature like
--- textureCompressionASTC_HDR.
---
--- The feature is strictly speaking redundant as long as this is just an
--- extension; it would be sufficient to just enable the extension. But
--- adding the feature is more forward-looking if wanted to make this an
--- optional core feature in the future.
---
--- 2) Should we introduce new format enums for HDR?
---
--- Yes. Vulkan 1.0 describes the ASTC format enums as UNORM, e.g.
--- 'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK', so it is
--- confusing to make these contain HDR data. Note that the OpenGL (ES)
--- extensions did not make this distinction because a single ASTC HDR
--- texture may contain both unorm and float blocks. Implementations /may/
--- not be able to distinguish between LDR and HDR ASTC textures internally
--- and just treat them as the same format, i.e. if this extension is
--- supported then sampling from a
--- 'Vulkan.Core10.Enums.Format.FORMAT_ASTC_4x4_UNORM_BLOCK' image format
--- /may/ return HDR results. Applications /can/ get predictable results by
--- using the appropriate image format.
---
--- == Version History
---
--- -   Revision 1, 2019-05-28 (Jan-Harald Fredriksen)
---
---     -   Initial version
---
--- == See Also
---
--- 'PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_texture_compression_astc_hdr 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_texture_compression_astc_hdr  (PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
-
-instance ToCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
-instance Show PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
-
-instance FromCStruct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT
-
diff --git a/src/Vulkan/Extensions/VK_EXT_tooling_info.hs b/src/Vulkan/Extensions/VK_EXT_tooling_info.hs
--- a/src/Vulkan/Extensions/VK_EXT_tooling_info.hs
+++ b/src/Vulkan/Extensions/VK_EXT_tooling_info.hs
@@ -21,6 +21,11 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -31,6 +36,10 @@
 -- [__Last Modified Date__]
 --     2018-11-05
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__Contributors__]
 --
 --     -   Rolando Caloca
@@ -87,34 +96,43 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>
 -- is supported:
 --
--- -   Extending 'ToolPurposeFlagBitsEXT':
+-- -   Extending
+--     'Vulkan.Core13.Enums.ToolPurposeFlagBits.ToolPurposeFlagBits':
 --
---     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.ToolPurposeFlagBits.TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>
 -- is supported:
 --
--- -   Extending 'ToolPurposeFlagBitsEXT':
+-- -   Extending
+--     'Vulkan.Core13.Enums.ToolPurposeFlagBits.ToolPurposeFlagBits':
 --
---     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.ToolPurposeFlagBits.TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>
 -- is supported:
 --
--- -   Extending 'ToolPurposeFlagBitsEXT':
+-- -   Extending
+--     'Vulkan.Core13.Enums.ToolPurposeFlagBits.ToolPurposeFlagBits':
 --
---     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.ToolPurposeFlagBits.TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'
 --
---     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.ToolPurposeFlagBits.TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- EXT suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Examples
 --
 -- __Printing Tool Information__
@@ -163,331 +181,45 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_tooling_info 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_tooling_info  ( getPhysicalDeviceToolPropertiesEXT
-                                              , PhysicalDeviceToolPropertiesEXT(..)
+module Vulkan.Extensions.VK_EXT_tooling_info  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT
+                                              , getPhysicalDeviceToolPropertiesEXT
                                               , ToolPurposeFlagsEXT
-                                              , ToolPurposeFlagBitsEXT( TOOL_PURPOSE_VALIDATION_BIT_EXT
-                                                                      , TOOL_PURPOSE_PROFILING_BIT_EXT
-                                                                      , TOOL_PURPOSE_TRACING_BIT_EXT
-                                                                      , TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT
-                                                                      , TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT
-                                                                      , TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT
-                                                                      , TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT
-                                                                      , ..
-                                                                      )
+                                              , ToolPurposeFlagBitsEXT
+                                              , PhysicalDeviceToolPropertiesEXT
                                               , EXT_TOOLING_INFO_SPEC_VERSION
                                               , pattern EXT_TOOLING_INFO_SPEC_VERSION
                                               , EXT_TOOLING_INFO_EXTENSION_NAME
                                               , pattern EXT_TOOLING_INFO_EXTENSION_NAME
                                               ) where
 
-import Vulkan.CStruct.Utils (FixedArray)
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Exception.Base (bracket)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import GHC.Base (when)
-import GHC.IO (throwIO)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showString)
-import Numeric (showHex)
-import Data.ByteString (packCString)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.C.Types (CChar)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Word (Word32)
-import Data.ByteString (ByteString)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.CStruct.Utils (pokeFixedLengthNullTerminatedByteString)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Dynamic (InstanceCmds(pVkGetPhysicalDeviceToolPropertiesEXT))
-import Vulkan.Core10.APIConstants (MAX_DESCRIPTION_SIZE)
-import Vulkan.Core10.APIConstants (MAX_EXTENSION_NAME_SIZE)
-import Vulkan.Core10.Handles (PhysicalDevice)
-import Vulkan.Core10.Handles (PhysicalDevice(..))
-import Vulkan.Core10.Handles (PhysicalDevice(PhysicalDevice))
-import Vulkan.Core10.Handles (PhysicalDevice_T)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetPhysicalDeviceToolPropertiesEXT
-  :: FunPtr (Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr PhysicalDeviceToolPropertiesEXT -> IO Result) -> Ptr PhysicalDevice_T -> Ptr Word32 -> Ptr PhysicalDeviceToolPropertiesEXT -> IO Result
+import Vulkan.Core13.Promoted_From_VK_EXT_tooling_info (getPhysicalDeviceToolProperties)
+import Vulkan.Core13.Promoted_From_VK_EXT_tooling_info (PhysicalDeviceToolProperties)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlagBits)
+import Vulkan.Core13.Enums.ToolPurposeFlagBits (ToolPurposeFlags)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES
 
--- | vkGetPhysicalDeviceToolPropertiesEXT - Reports properties of tools
--- active on the specified physical device
---
--- = Description
---
--- If @pToolProperties@ is @NULL@, then the number of tools currently
--- active on @physicalDevice@ is returned in @pToolCount@. Otherwise,
--- @pToolCount@ /must/ point to a variable set by the user to the number of
--- elements in the @pToolProperties@ array, and on return the variable is
--- overwritten with the number of structures actually written to
--- @pToolProperties@. If @pToolCount@ is less than the number of currently
--- active tools, at most @pToolCount@ structures will be written.
---
--- The count and properties of active tools /may/ change in response to
--- events outside the scope of the specification. An application /should/
--- assume these properties might change at any given time.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter#
---     @physicalDevice@ /must/ be a valid
---     'Vulkan.Core10.Handles.PhysicalDevice' handle
---
--- -   #VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolCount-parameter#
---     @pToolCount@ /must/ be a valid pointer to a @uint32_t@ value
---
--- -   #VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolProperties-parameter#
---     If the value referenced by @pToolCount@ is not @0@, and
---     @pToolProperties@ is not @NULL@, @pToolProperties@ /must/ be a valid
---     pointer to an array of @pToolCount@
---     'PhysicalDeviceToolPropertiesEXT' structures
---
--- == Return Codes
---
--- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-successcodes Success>]
---
---     -   'Vulkan.Core10.Enums.Result.SUCCESS'
---
---     -   'Vulkan.Core10.Enums.Result.INCOMPLETE'
---
--- [<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'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
--- 'Vulkan.Core10.Handles.PhysicalDevice',
--- 'PhysicalDeviceToolPropertiesEXT'
-getPhysicalDeviceToolPropertiesEXT :: forall io
-                                    . (MonadIO io)
-                                   => -- | @physicalDevice@ is the handle to the physical device to query for
-                                      -- active tools.
-                                      PhysicalDevice
-                                   -> io (Result, ("toolProperties" ::: Vector PhysicalDeviceToolPropertiesEXT))
-getPhysicalDeviceToolPropertiesEXT physicalDevice = liftIO . evalContT $ do
-  let vkGetPhysicalDeviceToolPropertiesEXTPtr = pVkGetPhysicalDeviceToolPropertiesEXT (case physicalDevice of PhysicalDevice{instanceCmds} -> instanceCmds)
-  lift $ unless (vkGetPhysicalDeviceToolPropertiesEXTPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetPhysicalDeviceToolPropertiesEXT is null" Nothing Nothing
-  let vkGetPhysicalDeviceToolPropertiesEXT' = mkVkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXTPtr
-  let physicalDevice' = physicalDeviceHandle (physicalDevice)
-  pPToolCount <- ContT $ bracket (callocBytes @Word32 4) free
-  r <- lift $ traceAroundEvent "vkGetPhysicalDeviceToolPropertiesEXT" (vkGetPhysicalDeviceToolPropertiesEXT' physicalDevice' (pPToolCount) (nullPtr))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-  pToolCount <- lift $ peek @Word32 pPToolCount
-  pPToolProperties <- ContT $ bracket (callocBytes @PhysicalDeviceToolPropertiesEXT ((fromIntegral (pToolCount)) * 1048)) free
-  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPToolProperties `advancePtrBytes` (i * 1048) :: Ptr PhysicalDeviceToolPropertiesEXT) . ($ ())) [0..(fromIntegral (pToolCount)) - 1]
-  r' <- lift $ traceAroundEvent "vkGetPhysicalDeviceToolPropertiesEXT" (vkGetPhysicalDeviceToolPropertiesEXT' physicalDevice' (pPToolCount) ((pPToolProperties)))
-  lift $ when (r' < SUCCESS) (throwIO (VulkanException r'))
-  pToolCount' <- lift $ peek @Word32 pPToolCount
-  pToolProperties' <- lift $ generateM (fromIntegral (pToolCount')) (\i -> peekCStruct @PhysicalDeviceToolPropertiesEXT (((pPToolProperties) `advancePtrBytes` (1048 * (i)) :: Ptr PhysicalDeviceToolPropertiesEXT)))
-  pure $ ((r'), pToolProperties')
 
+-- No documentation found for TopLevel "vkGetPhysicalDeviceToolPropertiesEXT"
+getPhysicalDeviceToolPropertiesEXT = getPhysicalDeviceToolProperties
 
--- | VkPhysicalDeviceToolPropertiesEXT - Structure providing information
--- about an active tool
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'ToolPurposeFlagsEXT', 'getPhysicalDeviceToolPropertiesEXT'
-data PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolPropertiesEXT
-  { -- | @name@ is a null-terminated UTF-8 string containing the name of the
-    -- tool.
-    name :: ByteString
-  , -- | @version@ is a null-terminated UTF-8 string containing the version of
-    -- the tool.
-    version :: ByteString
-  , -- | @purposes@ is a bitmask of 'ToolPurposeFlagBitsEXT' which is populated
-    -- with purposes supported by the tool.
-    purposes :: ToolPurposeFlagsEXT
-  , -- | @description@ is a null-terminated UTF-8 string containing a description
-    -- of the tool.
-    description :: ByteString
-  , -- | @layer@ is a null-terminated UTF-8 string containing the name of the
-    -- layer implementing the tool, if the tool is implemented in a layer -
-    -- otherwise it /may/ be an empty string.
-    layer :: ByteString
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceToolPropertiesEXT)
-#endif
-deriving instance Show PhysicalDeviceToolPropertiesEXT
 
-instance ToCStruct PhysicalDeviceToolPropertiesEXT where
-  withCStruct x f = allocaBytes 1048 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceToolPropertiesEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (name)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (version)
-    poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT)) (purposes)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (description)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (layer)
-    f
-  cStructSize = 1048
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)
-    poke ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT)) (zero)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))) (mempty)
-    pokeFixedLengthNullTerminatedByteString ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))) (mempty)
-    f
+-- No documentation found for TopLevel "VkToolPurposeFlagsEXT"
+type ToolPurposeFlagsEXT = ToolPurposeFlags
 
-instance FromCStruct PhysicalDeviceToolPropertiesEXT where
-  peekCStruct p = do
-    name <- packCString (lowerArrayPtr ((p `plusPtr` 16 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))
-    version <- packCString (lowerArrayPtr ((p `plusPtr` 272 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))
-    purposes <- peek @ToolPurposeFlagsEXT ((p `plusPtr` 528 :: Ptr ToolPurposeFlagsEXT))
-    description <- packCString (lowerArrayPtr ((p `plusPtr` 532 :: Ptr (FixedArray MAX_DESCRIPTION_SIZE CChar))))
-    layer <- packCString (lowerArrayPtr ((p `plusPtr` 788 :: Ptr (FixedArray MAX_EXTENSION_NAME_SIZE CChar))))
-    pure $ PhysicalDeviceToolPropertiesEXT
-             name version purposes description layer
 
-instance Storable PhysicalDeviceToolPropertiesEXT where
-  sizeOf ~_ = 1048
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceToolPropertiesEXT where
-  zero = PhysicalDeviceToolPropertiesEXT
-           mempty
-           mempty
-           zero
-           mempty
-           mempty
+-- No documentation found for TopLevel "VkToolPurposeFlagBitsEXT"
+type ToolPurposeFlagBitsEXT = ToolPurposeFlagBits
 
 
-type ToolPurposeFlagsEXT = ToolPurposeFlagBitsEXT
-
--- | VkToolPurposeFlagBitsEXT - Bitmask specifying the purposes of an active
--- tool
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info VK_EXT_tooling_info>,
--- 'ToolPurposeFlagsEXT'
-newtype ToolPurposeFlagBitsEXT = ToolPurposeFlagBitsEXT Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'TOOL_PURPOSE_VALIDATION_BIT_EXT' specifies that the tool provides
--- validation of API usage.
-pattern TOOL_PURPOSE_VALIDATION_BIT_EXT          = ToolPurposeFlagBitsEXT 0x00000001
--- | 'TOOL_PURPOSE_PROFILING_BIT_EXT' specifies that the tool provides
--- profiling of API usage.
-pattern TOOL_PURPOSE_PROFILING_BIT_EXT           = ToolPurposeFlagBitsEXT 0x00000002
--- | 'TOOL_PURPOSE_TRACING_BIT_EXT' specifies that the tool is capturing data
--- about the application’s API usage, including anything from simple
--- logging to capturing data for later replay.
-pattern TOOL_PURPOSE_TRACING_BIT_EXT             = ToolPurposeFlagBitsEXT 0x00000004
--- | 'TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT' specifies that the tool
--- provides additional API features\/extensions on top of the underlying
--- implementation.
-pattern TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = ToolPurposeFlagBitsEXT 0x00000008
--- | 'TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT' specifies that the tool
--- modifies the API features\/limits\/extensions presented to the
--- application.
-pattern TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT  = ToolPurposeFlagBitsEXT 0x00000010
--- | 'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT' specifies that the tool consumes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-debug-markers debug markers>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-object-debug-annotation object debug annotation>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-queue-labels queue labels>,
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#debugging-command-buffer-labels command buffer labels>
-pattern TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT       = ToolPurposeFlagBitsEXT 0x00000040
--- | 'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT' specifies that the tool reports
--- additional information to the application via callbacks specified by
--- 'Vulkan.Extensions.VK_EXT_debug_report.createDebugReportCallbackEXT' or
--- 'Vulkan.Extensions.VK_EXT_debug_utils.createDebugUtilsMessengerEXT'
-pattern TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT     = ToolPurposeFlagBitsEXT 0x00000020
-
-conNameToolPurposeFlagBitsEXT :: String
-conNameToolPurposeFlagBitsEXT = "ToolPurposeFlagBitsEXT"
-
-enumPrefixToolPurposeFlagBitsEXT :: String
-enumPrefixToolPurposeFlagBitsEXT = "TOOL_PURPOSE_"
-
-showTableToolPurposeFlagBitsEXT :: [(ToolPurposeFlagBitsEXT, String)]
-showTableToolPurposeFlagBitsEXT =
-  [ (TOOL_PURPOSE_VALIDATION_BIT_EXT         , "VALIDATION_BIT_EXT")
-  , (TOOL_PURPOSE_PROFILING_BIT_EXT          , "PROFILING_BIT_EXT")
-  , (TOOL_PURPOSE_TRACING_BIT_EXT            , "TRACING_BIT_EXT")
-  , (TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT, "ADDITIONAL_FEATURES_BIT_EXT")
-  , (TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT , "MODIFYING_FEATURES_BIT_EXT")
-  , (TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT      , "DEBUG_MARKERS_BIT_EXT")
-  , (TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT    , "DEBUG_REPORTING_BIT_EXT")
-  ]
-
-instance Show ToolPurposeFlagBitsEXT where
-  showsPrec = enumShowsPrec enumPrefixToolPurposeFlagBitsEXT
-                            showTableToolPurposeFlagBitsEXT
-                            conNameToolPurposeFlagBitsEXT
-                            (\(ToolPurposeFlagBitsEXT x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read ToolPurposeFlagBitsEXT where
-  readPrec = enumReadPrec enumPrefixToolPurposeFlagBitsEXT
-                          showTableToolPurposeFlagBitsEXT
-                          conNameToolPurposeFlagBitsEXT
-                          ToolPurposeFlagBitsEXT
+-- No documentation found for TopLevel "VkPhysicalDeviceToolPropertiesEXT"
+type PhysicalDeviceToolPropertiesEXT = PhysicalDeviceToolProperties
 
 
 type EXT_TOOLING_INFO_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_EXT_tooling_info.hs-boot b/src/Vulkan/Extensions/VK_EXT_tooling_info.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_EXT_tooling_info.hs-boot
+++ /dev/null
@@ -1,182 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_EXT_tooling_info - device extension
---
--- == VK_EXT_tooling_info
---
--- [__Name String__]
---     @VK_EXT_tooling_info@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     246
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
--- [__Contact__]
---
---     -   Tobias Hector
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_EXT_tooling_info] @tobski%0A<<Here describe the issue or question you have about the VK_EXT_tooling_info extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2018-11-05
---
--- [__Contributors__]
---
---     -   Rolando Caloca
---
---     -   Matthaeus Chajdas
---
---     -   Baldur Karlsson
---
---     -   Daniel Rakos
---
--- == Description
---
--- When an error occurs during application development, a common question
--- is \"What tools are actually running right now?\" This extension adds
--- the ability to query that information directly from the Vulkan
--- implementation.
---
--- Outdated versions of one tool might not play nicely with another, or
--- perhaps a tool is not actually running when it should have been. Trying
--- to figure that out can cause headaches as it is necessary to consult
--- each known tool to figure out what is going on — in some cases the tool
--- might not even be known.
---
--- Typically, the expectation is that developers will simply print out this
--- information for visual inspection when an issue occurs, however a small
--- amount of semantic information about what the tool is doing is provided
--- to help identify it programmatically. For example, if the advertised
--- limits or features of an implementation are unexpected, is there a tool
--- active which modifies these limits? Or if an application is providing
--- debug markers, but the implementation is not actually doing anything
--- with that information, this can quickly point that out.
---
--- == New Commands
---
--- -   'getPhysicalDeviceToolPropertiesEXT'
---
--- == New Structures
---
--- -   'PhysicalDeviceToolPropertiesEXT'
---
--- == New Enums
---
--- -   'ToolPurposeFlagBitsEXT'
---
--- == New Bitmasks
---
--- -   'ToolPurposeFlagsEXT'
---
--- == New Enum Constants
---
--- -   'EXT_TOOLING_INFO_EXTENSION_NAME'
---
--- -   'EXT_TOOLING_INFO_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_marker VK_EXT_debug_marker>
--- is supported:
---
--- -   Extending 'ToolPurposeFlagBitsEXT':
---
---     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_report VK_EXT_debug_report>
--- is supported:
---
--- -   Extending 'ToolPurposeFlagBitsEXT':
---
---     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_debug_utils VK_EXT_debug_utils>
--- is supported:
---
--- -   Extending 'ToolPurposeFlagBitsEXT':
---
---     -   'TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT'
---
---     -   'TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT'
---
--- == Examples
---
--- __Printing Tool Information__
---
--- > uint32_t num_tools;
--- > VkPhysicalDeviceToolPropertiesEXT *pToolProperties;
--- > vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, NULL);
--- >
--- > pToolProperties = (VkPhysicalDeviceToolPropertiesEXT*)malloc(sizeof(VkPhysicalDeviceToolPropertiesEXT) * num_tools);
--- >
--- > vkGetPhysicalDeviceToolPropertiesEXT(physicalDevice, &num_tools, pToolProperties);
--- >
--- > for (int i = 0; i < num_tools; ++i) {
--- >     printf("%s:\n", pToolProperties[i].name);
--- >     printf("Version:\n");
--- >     printf("%s:\n", pToolProperties[i].version);
--- >     printf("Description:\n");
--- >     printf("\t%s\n", pToolProperties[i].description);
--- >     printf("Purposes:\n");
--- >     printf("\t%s\n", VkToolPurposeFlagBitsEXT_to_string(pToolProperties[i].purposes));
--- >     if (strnlen_s(pToolProperties[i].layer,VK_MAX_EXTENSION_NAME_SIZE) > 0) {
--- >         printf("Corresponding Layer:\n");
--- >         printf("\t%s\n", pToolProperties[i].layer);
--- >     }
--- > }
---
--- == Issues
---
--- 1) Why is this information separate from the layer mechanism?
---
--- Some tooling may be built into a driver, or be part of the Vulkan loader
--- etc. Tying this information directly to layers would have been awkward
--- at best.
---
--- == Version History
---
--- -   Revision 1, 2018-11-05 (Tobias Hector)
---
---     -   Initial draft
---
--- == See Also
---
--- 'PhysicalDeviceToolPropertiesEXT', 'ToolPurposeFlagBitsEXT',
--- 'ToolPurposeFlagsEXT', 'getPhysicalDeviceToolPropertiesEXT'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_tooling_info 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_tooling_info  (PhysicalDeviceToolPropertiesEXT) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceToolPropertiesEXT
-
-instance ToCStruct PhysicalDeviceToolPropertiesEXT
-instance Show PhysicalDeviceToolPropertiesEXT
-
-instance FromCStruct PhysicalDeviceToolPropertiesEXT
-
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
@@ -206,7 +206,7 @@
 -- A query pool created with this type will capture 2 integers -
 -- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
 -- stream output from the last
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
 -- The vertex stream output queried is zero by default, but can be
 -- specified with the new 'cmdBeginQueryIndexedEXT' and
 -- 'cmdEndQueryIndexedEXT' commands.
@@ -230,7 +230,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -552,7 +552,7 @@
 --     'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_GRAPHICS'
 --
 -- -   #VUID-vkCmdBeginTransformFeedbackEXT-None-04128# The last
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 --     of the bound graphics pipeline /must/ have been declared with the
 --     @Xfb@ execution mode
 --
@@ -898,7 +898,7 @@
 --
 -- -   #VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753# If the @queryPool@
 --     was created with the same @queryType@ as that of another
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
 --     query within @commandBuffer@, then @index@ /must/ not match the
 --     index used for the active query
 --
@@ -1076,7 +1076,7 @@
 --
 -- -   #VUID-vkCmdEndQueryIndexedEXT-None-02342# All queries used by the
 --     command /must/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#queries-operation-active active>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#queries-operation-active active>
 --
 -- -   #VUID-vkCmdEndQueryIndexedEXT-query-02343# @query@ /must/ be less
 --     than the number of queries in @queryPool@
@@ -1225,7 +1225,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -1281,7 +1281,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -1289,7 +1289,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-02697# For each set /n/
 --     that is statically used by the 'Vulkan.Core10.Handles.Pipeline'
@@ -1492,50 +1492,50 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419# If the
 --     bound graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1543,11 +1543,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1555,11 +1555,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1567,11 +1567,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04140# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1579,11 +1579,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1591,11 +1591,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1603,21 +1603,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04876# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04877# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -1635,14 +1635,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727# If
@@ -1666,7 +1666,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06172# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1675,7 +1675,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06173# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1684,7 +1684,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06174# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1693,7 +1693,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06175# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1702,7 +1702,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06176# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1711,7 +1711,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06177# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1720,61 +1720,61 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-viewMask-06178# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06180# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06181# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06182# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06183# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1783,7 +1783,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1796,11 +1796,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -1812,13 +1812,13 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1826,17 +1826,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1844,7 +1844,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06188# If
 --     the currently bound pipeline was created without a
@@ -1852,11 +1852,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -1865,37 +1865,37 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06189# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06190# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -1919,7 +1919,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1935,7 +1935,7 @@
 --     graphics pipeline was created with both the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic states enabled, then
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1943,7 +1943,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913# If the bound
 --     graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     dynamic state enabled, then
@@ -1971,7 +1971,7 @@
 --
 -- -   #VUID-vkCmdDrawIndirectByteCountEXT-None-04879# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -2205,7 +2205,7 @@
   , -- | #limits-maxTransformFeedbackBuffers# @maxTransformFeedbackBuffers@ is
     -- the maximum number of transform feedback buffers that can be bound for
     -- capturing shader outputs from the last
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
     maxTransformFeedbackBuffers :: Word32
   , -- | #limits-maxTransformFeedbackBufferSize# @maxTransformFeedbackBufferSize@
     -- is the maximum size that can be specified when binding a buffer for
diff --git a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_transform_feedback.hs-boot
@@ -206,7 +206,7 @@
 -- A query pool created with this type will capture 2 integers -
 -- numPrimitivesWritten and numPrimitivesNeeded - for the specified vertex
 -- stream output from the last
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>.
 -- The vertex stream output queried is zero by default, but can be
 -- specified with the new 'cmdBeginQueryIndexedEXT' and
 -- 'cmdEndQueryIndexedEXT' commands.
@@ -230,7 +230,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_transform_feedback Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
--- a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
+++ b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -300,7 +300,7 @@
                             -- containing the initial parameters for the validation cache object.
                             ValidationCacheCreateInfoEXT
                          -> -- | @pAllocator@ controls host memory allocation as described in the
-                            -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                            -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                             -- chapter.
                             ("allocator" ::: Maybe AllocationCallbacks)
                          -> io (ValidationCacheEXT)
@@ -391,7 +391,7 @@
                           -> -- | @validationCache@ is the handle of the validation cache to destroy.
                              ValidationCacheEXT
                           -> -- | @pAllocator@ controls host memory allocation as described in the
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                             -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                              -- chapter.
                              ("allocator" ::: Maybe AllocationCallbacks)
                           -> io ()
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs-boot b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_validation_cache.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_validation_cache.hs-boot
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_cache Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_features.hs b/src/Vulkan/Extensions/VK_EXT_validation_features.hs
--- a/src/Vulkan/Extensions/VK_EXT_validation_features.hs
+++ b/src/Vulkan/Extensions/VK_EXT_validation_features.hs
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_features.hs-boot b/src/Vulkan/Extensions/VK_EXT_validation_features.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_validation_features.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_validation_features.hs-boot
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_features Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_flags.hs b/src/Vulkan/Extensions/VK_EXT_validation_flags.hs
--- a/src/Vulkan/Extensions/VK_EXT_validation_flags.hs
+++ b/src/Vulkan/Extensions/VK_EXT_validation_flags.hs
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_validation_flags.hs-boot b/src/Vulkan/Extensions/VK_EXT_validation_flags.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_validation_flags.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_validation_flags.hs-boot
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_validation_flags Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
--- a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs
@@ -160,7 +160,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -255,7 +255,7 @@
     -- queried using
     -- 'PhysicalDeviceVertexAttributeDivisorPropertiesEXT'::@maxVertexAttribDivisor@.
     -- A value of @0@ /can/ be used for the divisor if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
     -- feature is enabled. In this case, the same vertex attribute will be
     -- applied to all instances.
     divisor :: Word32
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs-boot b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_attribute_divisor.hs-boot
@@ -160,7 +160,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_attribute_divisor Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs
--- a/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -196,7 +196,7 @@
 -- values used to create the currently active pipeline.
 --
 -- If the bound pipeline state object was also created with the
--- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+-- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 -- dynamic state enabled, then
 -- 'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdBindVertexBuffers2EXT'
 -- can be used instead of 'cmdSetVertexInputEXT' to dynamically set the
@@ -205,7 +205,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetVertexInputEXT-None-04790# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexInputDynamicState vertexInputDynamicState>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetVertexInputEXT-vertexBindingDescriptionCount-04791#
@@ -388,11 +388,11 @@
 --     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxVertexInputBindingStride@
 --
 -- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04798# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
 --     feature is not enabled, @divisor@ /must/ not be @0@
 --
 -- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-04799# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
 --     feature is not enabled, @divisor@ /must/ be @1@
 --
 -- -   #VUID-VkVertexInputBindingDescription2EXT-divisor-06226# @divisor@
@@ -433,14 +433,14 @@
   , -- | @divisor@ is the number of successive instances that will use the same
     -- value of the vertex attribute when instanced rendering is enabled. This
     -- member /can/ be set to a value other than @1@ if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateDivisor vertexAttributeInstanceRateDivisor>
     -- feature is enabled. For example, if the divisor is N, the same vertex
     -- attribute will be applied to N successive instances before moving on to
     -- the next vertex attribute. The maximum value of @divisor@ is
     -- implementation-dependent and can be queried using
     -- 'Vulkan.Extensions.VK_EXT_vertex_attribute_divisor.PhysicalDeviceVertexAttributeDivisorPropertiesEXT'::@maxVertexAttribDivisor@.
     -- A value of @0@ /can/ be used for the divisor if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-vertexAttributeInstanceRateZeroDivisor vertexAttributeInstanceRateZeroDivisor>
     -- feature is enabled. In this case, the same vertex attribute will be
     -- applied to all instances.
     divisor :: Word32
diff --git a/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs-boot b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_vertex_input_dynamic_state.hs-boot
@@ -112,7 +112,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_vertex_input_dynamic_state Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs
--- a/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_sampler_ycbcr_conversion@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Tony Zlatinski
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2020-07-28
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -64,18 +73,28 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Format.Format':
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
+--     -   'FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
+--     -   'FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
+--     -   'FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
+--     -   'FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. The format enumerants
+-- introduced by the extension are included in core Vulkan 1.3, with the
+-- EXT suffix omitted. However, runtime support for these formats is
+-- optional in core Vulkan 1.3, while if this extension is supported,
+-- runtime support is mandatory. The feature structure is not promoted. The
+-- original enum names are still available as aliases of the core
+-- functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-03-08 (Piers Daniell)
@@ -89,11 +108,15 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats  ( PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(..)
+module Vulkan.Extensions.VK_EXT_ycbcr_2plane_444_formats  ( pattern FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT
+                                                          , pattern FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT
+                                                          , pattern FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT
+                                                          , pattern FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT
+                                                          , PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(..)
                                                           , EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION
                                                           , pattern EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION
                                                           , EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME
@@ -121,7 +144,27 @@
 import Vulkan.Core10.FundamentalTypes (boolToBool32)
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.Format (Format(FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_G16_B16R16_2PLANE_444_UNORM))
+import Vulkan.Core10.Enums.Format (Format(FORMAT_G8_B8R8_2PLANE_444_UNORM))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT))
+-- No documentation found for TopLevel "VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT"
+pattern FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = FORMAT_G8_B8R8_2PLANE_444_UNORM
+
+
+-- No documentation found for TopLevel "VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT"
+pattern FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16
+
+
+-- No documentation found for TopLevel "VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT"
+pattern FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16
+
+
+-- No documentation found for TopLevel "VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT"
+pattern FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = FORMAT_G16_B16R16_2PLANE_444_UNORM
+
+
 -- | VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT - Structure describing
 -- whether the implementation supports additional 2-plane 444 Y′CBCR
 -- formats
@@ -144,6 +187,13 @@
 --
 -- == Valid Usage (Implicit)
 --
+-- Note
+--
+-- Although the formats defined by the @VK_EXT_ycbcr_2plane_444_formats@
+-- were promoted to Vulkan 1.3 as optional formats, the
+-- 'PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT' structure was not
+-- promoted to Vulkan 1.3.
+--
 -- = See Also
 --
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats VK_EXT_ycbcr_2plane_444_formats>,
@@ -153,13 +203,13 @@
   { -- | #features-ycbcr2plane444Formats# @ycbcr2plane444Formats@ indicates that
     -- the implementation supports the following 2-plane 444 Y′CBCR formats:
     --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM'
     --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16'
     --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16'
     --
-    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
+    -- -   'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM'
     ycbcr2plane444Formats :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs-boot b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_2plane_444_formats.hs-boot
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_sampler_ycbcr_conversion@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Tony Zlatinski
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2020-07-28
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -64,18 +73,28 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.Format.Format':
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
+--     -   'FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
+--     -   'FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
+--     -   'FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT'
 --
---     -   'Vulkan.Core10.Enums.Format.FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
+--     -   'FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- This extension has been partially promoted. The format enumerants
+-- introduced by the extension are included in core Vulkan 1.3, with the
+-- EXT suffix omitted. However, runtime support for these formats is
+-- optional in core Vulkan 1.3, while if this extension is supported,
+-- runtime support is mandatory. The feature structure is not promoted. The
+-- original enum names are still available as aliases of the core
+-- functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-03-08 (Piers Daniell)
@@ -89,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_2plane_444_formats Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
--- a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs
@@ -40,7 +40,7 @@
 -- == Description
 --
 -- This extension allows images of a format that requires
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
 -- to be created with multiple array layers, which is otherwise restricted.
 --
 -- == New Structures
@@ -74,7 +74,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -137,7 +137,7 @@
 data PhysicalDeviceYcbcrImageArraysFeaturesEXT = PhysicalDeviceYcbcrImageArraysFeaturesEXT
   { -- | #features-ycbcrImageArrays# @ycbcrImageArrays@ indicates that the
     -- implementation supports creating images with a format that requires
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
     -- and has multiple array layers.
     ycbcrImageArrays :: Bool }
   deriving (Typeable, Eq)
diff --git a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs-boot b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs-boot
--- a/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs-boot
+++ b/src/Vulkan/Extensions/VK_EXT_ycbcr_image_arrays.hs-boot
@@ -40,7 +40,7 @@
 -- == Description
 --
 -- This extension allows images of a format that requires
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion Y′CBCR conversion>
 -- to be created with multiple array layers, which is otherwise restricted.
 --
 -- == New Structures
@@ -74,7 +74,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_EXT_ycbcr_image_arrays Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs b/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs
@@ -204,7 +204,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -402,7 +402,7 @@
                               -> -- | @pAllocator@ is a pointer to a
                                  -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
                                  -- controlling host memory allocation as described in the
-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io (BufferCollectionFUCHSIA)
@@ -642,7 +642,7 @@
                                -> -- | @pAllocator@ is a pointer to a
                                   -- 'Vulkan.Core10.AllocationCallbacks.AllocationCallbacks' structure
                                   -- controlling host memory allocation as described in the
-                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io ()
@@ -1051,7 +1051,7 @@
   , -- | @bufferCount@ is the number of buffers in the collection
     bufferCount :: Word32
   , -- | @createInfoIndex@ as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#sysmem-chosen-create-infos Sysmem chosen create infos>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#sysmem-chosen-create-infos Sysmem chosen create infos>
     createInfoIndex :: Word32
   , -- | @sysmemPixelFormat@ is the Sysmem @PixelFormatType@ as defined in
     -- @fuchsia.sysmem\/image_formats.fidl@
@@ -1204,7 +1204,7 @@
 --     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits'
 --     /must/ be chosen from among the buffer compatible format features
 --     listed in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#buffer-compatible-format-features buffer compatible format features>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#buffer-compatible-format-features buffer compatible format features>
 --
 -- == Valid Usage (Implicit)
 --
@@ -1487,7 +1487,7 @@
 --
 -- -   #VUID-VkImageConstraintsInfoFUCHSIA-attachmentFragmentShadingRate-06401#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is enabled, and @pFormatConstraints@::@imageCreateInfo@::@usage@
 --     contains
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs-boot b/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs-boot
--- a/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs-boot
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_buffer_collection.hs-boot
@@ -204,7 +204,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_buffer_collection Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs
@@ -111,7 +111,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs-boot b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs-boot
--- a/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs-boot
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_memory.hs-boot
@@ -111,7 +111,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs
@@ -109,7 +109,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -203,7 +203,7 @@
 -- Exporting a Zircon event handle from a semaphore /may/ have side effects
 -- depending on the transference of the specified handle type, as described
 -- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
 --
 -- == Return Codes
 --
@@ -334,13 +334,13 @@
 --
 -- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-04765#
 --     @handleType@ /must/ be a value included in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fuchsia Handle Types Supported by >
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fuchsia Handle Types Supported by >
 --     table
 --
 -- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04766#
 --     @zirconHandle@ /must/ obey any requirements listed for @handleType@
 --     in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
 --
 -- -   #VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04767#
 --     @zirconHandle@ /must/ have @ZX_RIGHTS_BASIC@ and @ZX_RIGHTS_SIGNAL@
@@ -472,7 +472,7 @@
 -- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04759#
 --     @semaphore@ /must/ not currently have its payload replaced by an
 --     imported payload as described below in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
 --     unless that imported payload’s handle type was included in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@
 --     for @handleType@
@@ -480,13 +480,13 @@
 -- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04760# If
 --     @handleType@ refers to a handle type with copy payload transference
 --     semantics, as defined below in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
 --     there /must/ be no queue waiting on @semaphore@
 --
 -- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04761# If
 --     @handleType@ refers to a handle type with copy payload transference
 --     semantics, @semaphore@ /must/ be signaled, or have an associated
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 --     pending execution
 --
 -- -   #VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04762#
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs-boot b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs-boot
--- a/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs-boot
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_external_semaphore.hs-boot
@@ -109,7 +109,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_external_semaphore Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
--- a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -218,7 +218,7 @@
                                  ImagePipeSurfaceCreateInfoFUCHSIA
                               -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                                  -- surface object when there is no more specific allocator available (see
-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io (SurfaceKHR)
 createImagePipeSurfaceFUCHSIA instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_FUCHSIA_imagepipe_surface.hs-boot
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_FUCHSIA_imagepipe_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GGP_frame_token.hs b/src/Vulkan/Extensions/VK_GGP_frame_token.hs
--- a/src/Vulkan/Extensions/VK_GGP_frame_token.hs
+++ b/src/Vulkan/Extensions/VK_GGP_frame_token.hs
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GGP_frame_token.hs-boot b/src/Vulkan/Extensions/VK_GGP_frame_token.hs-boot
--- a/src/Vulkan/Extensions/VK_GGP_frame_token.hs-boot
+++ b/src/Vulkan/Extensions/VK_GGP_frame_token.hs-boot
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_frame_token Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs b/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs
--- a/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs
+++ b/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -248,7 +248,7 @@
                                     StreamDescriptorSurfaceCreateInfoGGP
                                  -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                                     -- surface object when there is no more specific allocator available (see
-                                    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                                    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                                     ("allocator" ::: Maybe AllocationCallbacks)
                                  -> io (SurfaceKHR)
 createStreamDescriptorSurfaceGGP instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs-boot b/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_GGP_stream_descriptor_surface.hs-boot
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GGP_stream_descriptor_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GOOGLE_decorate_string.hs b/src/Vulkan/Extensions/VK_GOOGLE_decorate_string.hs
--- a/src/Vulkan/Extensions/VK_GOOGLE_decorate_string.hs
+++ b/src/Vulkan/Extensions/VK_GOOGLE_decorate_string.hs
@@ -69,7 +69,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_decorate_string Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_decorate_string Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs b/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
--- a/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
+++ b/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs-boot b/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs-boot
--- a/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs-boot
+++ b/src/Vulkan/Extensions/VK_GOOGLE_display_timing.hs-boot
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_display_timing Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs b/src/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs
--- a/src/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs
+++ b/src/Vulkan/Extensions/VK_GOOGLE_hlsl_functionality1.hs
@@ -73,7 +73,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_hlsl_functionality1 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_hlsl_functionality1 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GOOGLE_surfaceless_query.hs b/src/Vulkan/Extensions/VK_GOOGLE_surfaceless_query.hs
--- a/src/Vulkan/Extensions/VK_GOOGLE_surfaceless_query.hs
+++ b/src/Vulkan/Extensions/VK_GOOGLE_surfaceless_query.hs
@@ -88,7 +88,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_surfaceless_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_surfaceless_query Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_GOOGLE_user_type.hs b/src/Vulkan/Extensions/VK_GOOGLE_user_type.hs
--- a/src/Vulkan/Extensions/VK_GOOGLE_user_type.hs
+++ b/src/Vulkan/Extensions/VK_GOOGLE_user_type.hs
@@ -69,7 +69,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_GOOGLE_user_type Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_GOOGLE_user_type Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs b/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs
--- a/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs
+++ b/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs
@@ -77,10 +77,9 @@
 --
 -- -   'HUAWEI_INVOCATION_MASK_SPEC_VERSION'
 --
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_synchronization2.AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
@@ -88,9 +87,9 @@
 --     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_synchronization2.PipelineStageFlagBits2KHR':
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -141,7 +140,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_invocation_mask Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_invocation_mask Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -151,11 +150,6 @@
                                                     , pattern HUAWEI_INVOCATION_MASK_SPEC_VERSION
                                                     , HUAWEI_INVOCATION_MASK_EXTENSION_NAME
                                                     , pattern HUAWEI_INVOCATION_MASK_EXTENSION_NAME
-                                                    , AccessFlagBits2KHR(..)
-                                                    , AccessFlags2KHR
-                                                    , PipelineStageFlagBits2KHR(..)
-                                                    , PipelineStageFlags2KHR
-                                                    , Flags64
                                                     ) where
 
 import Vulkan.Internal.Utils (traceAroundEvent)
@@ -198,11 +192,6 @@
 import Vulkan.Core10.Handles (ImageView(..))
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI))
-import Vulkan.Extensions.VK_KHR_synchronization2 (AccessFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_synchronization2 (AccessFlags2KHR)
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_synchronization2 (PipelineStageFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_synchronization2 (PipelineStageFlags2KHR)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -216,7 +205,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-None-04976# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-invocationMask invocation mask image>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04977# If @imageView@
diff --git a/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs-boot b/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs-boot
--- a/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs-boot
+++ b/src/Vulkan/Extensions/VK_HUAWEI_invocation_mask.hs-boot
@@ -77,10 +77,9 @@
 --
 -- -   'HUAWEI_INVOCATION_MASK_SPEC_VERSION'
 --
--- -   Extending
---     'Vulkan.Extensions.VK_KHR_synchronization2.AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_synchronization2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ImageUsageFlagBits.ImageUsageFlagBits':
@@ -88,9 +87,9 @@
 --     -   'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_synchronization2.PipelineStageFlagBits2KHR':
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
@@ -141,7 +140,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_invocation_mask Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_invocation_mask Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -108,9 +108,9 @@
 --     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_synchronization2.PipelineStageFlagBits2KHR':
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
@@ -335,7 +335,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -348,9 +348,6 @@
                                                     , pattern HUAWEI_SUBPASS_SHADING_SPEC_VERSION
                                                     , HUAWEI_SUBPASS_SHADING_EXTENSION_NAME
                                                     , pattern HUAWEI_SUBPASS_SHADING_EXTENSION_NAME
-                                                    , PipelineStageFlagBits2KHR(..)
-                                                    , PipelineStageFlags2KHR
-                                                    , Flags64
                                                     ) where
 
 import Vulkan.Internal.Utils (traceAroundEvent)
@@ -409,9 +406,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_synchronization2 (PipelineStageFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_synchronization2 (PipelineStageFlags2KHR)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -515,7 +509,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -571,7 +565,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -579,7 +573,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdSubpassShadingHUAWEI-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -813,7 +807,7 @@
     -- environment in which the pipeline will be used. The pipeline /must/ only
     -- be used with a render pass instance compatible with the one provided.
     -- See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-compatibility Render Pass Compatibility>
     -- for more information.
     renderPass :: RenderPass
   , -- | @subpass@ is the index of the subpass in the render pass where this
diff --git a/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs-boot b/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs-boot
--- a/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs-boot
+++ b/src/Vulkan/Extensions/VK_HUAWEI_subpass_shading.hs-boot
@@ -108,9 +108,9 @@
 --     -   'Vulkan.Core10.Enums.PipelineBindPoint.PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI'
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_synchronization2.PipelineStageFlagBits2KHR':
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_synchronization2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.ShaderStageFlagBits.ShaderStageFlagBits':
@@ -335,7 +335,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_HUAWEI_subpass_shading Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_IMG_filter_cubic.hs b/src/Vulkan/Extensions/VK_IMG_filter_cubic.hs
--- a/src/Vulkan/Extensions/VK_IMG_filter_cubic.hs
+++ b/src/Vulkan/Extensions/VK_IMG_filter_cubic.hs
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_IMG_filter_cubic Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_IMG_filter_cubic Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs b/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs
--- a/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs
+++ b/src/Vulkan/Extensions/VK_IMG_format_pvrtc.hs
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_IMG_format_pvrtc Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_IMG_format_pvrtc Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
--- a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
+++ b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs
@@ -313,7 +313,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -867,7 +867,7 @@
 -- -   #VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737#
 --     @configuration@ /must/ not be released before all command buffers
 --     submitted while the configuration was set are in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot
--- a/src/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot
+++ b/src/Vulkan/Extensions/VK_INTEL_performance_query.hs-boot
@@ -313,7 +313,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_performance_query Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
--- a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
+++ b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs
@@ -81,7 +81,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
 --
 -- == Version History
 --
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs-boot b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs-boot
--- a/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs-boot
+++ b/src/Vulkan/Extensions/VK_INTEL_shader_integer_functions2.hs-boot
@@ -81,7 +81,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-IntegerFunctions2INTEL IntegerFunctions2INTEL>
 --
 -- == Version History
 --
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_INTEL_shader_integer_functions2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_16bit_storage.hs b/src/Vulkan/Extensions/VK_KHR_16bit_storage.hs
--- a/src/Vulkan/Extensions/VK_KHR_16bit_storage.hs
+++ b/src/Vulkan/Extensions/VK_KHR_16bit_storage.hs
@@ -111,13 +111,13 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer16BitAccess StorageBuffer16BitAccess>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer16BitAccess StorageBuffer16BitAccess>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer16BitAccess UniformAndStorageBuffer16BitAccess>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer16BitAccess UniformAndStorageBuffer16BitAccess>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant16 StoragePushConstant16>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant16 StoragePushConstant16>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageInputOutput16 StorageInputOutput16>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageInputOutput16 StorageInputOutput16>
 --
 -- == Version History
 --
@@ -132,7 +132,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_16bit_storage Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_16bit_storage Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_8bit_storage.hs b/src/Vulkan/Extensions/VK_KHR_8bit_storage.hs
--- a/src/Vulkan/Extensions/VK_KHR_8bit_storage.hs
+++ b/src/Vulkan/Extensions/VK_KHR_8bit_storage.hs
@@ -97,11 +97,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer8BitAccess StorageBuffer8BitAccess>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StorageBuffer8BitAccess StorageBuffer8BitAccess>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer8BitAccess UniformAndStorageBuffer8BitAccess>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-UniformAndStorageBuffer8BitAccess UniformAndStorageBuffer8BitAccess>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant8 StoragePushConstant8>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-StoragePushConstant8 StoragePushConstant8>
 --
 -- == Version History
 --
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_8bit_storage Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_8bit_storage Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -355,9 +355,10 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
 -- is supported:
 --
--- -   Extending 'FormatFeatureFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
 --
 -- == Issues
 --
@@ -375,7 +376,7 @@
 --     'cmdCopyMemoryToAccelerationStructureKHR')
 --
 -- -   document
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
 --
 -- -   added 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure
 --
@@ -383,7 +384,7 @@
 --     ('cmdBuildAccelerationStructuresIndirectKHR')
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
 --     commands
 --
 -- -   reworked geometry structures so they could be better shared between
@@ -654,7 +655,7 @@
 --         structure and require one of them be @NULL@
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     support for acceleration structures
 --
 -- -   changed the @update@ member of
@@ -1146,7 +1147,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_acceleration_structure Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -1245,40 +1246,6 @@
                                                                                                , ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR
                                                                                                , ..
                                                                                                )
-                                                        , FormatFeatureFlags2KHR
-                                                        , FormatFeatureFlagBits2KHR( FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_BLIT_DST_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
-                                                                                   , FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_DISJOINT_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
-                                                                                   , FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-                                                                                   , FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT
-                                                                                   , FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
-                                                                                   , ..
-                                                                                   )
                                                         , KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
                                                         , pattern KHR_ACCELERATION_STRUCTURE_SPEC_VERSION
                                                         , KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME
@@ -1286,7 +1253,6 @@
                                                         , AccelerationStructureKHR(..)
                                                         , DeferredOperationKHR(..)
                                                         , DebugReportObjectTypeEXT(..)
-                                                        , Flags64
                                                         ) where
 
 import Vulkan.CStruct.Utils (FixedArray)
@@ -1409,7 +1375,6 @@
 import Vulkan.CStruct.Extends (Extendss)
 import Vulkan.CStruct.Extends (Extensible(..))
 import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.FundamentalTypes (Flags64)
 import Vulkan.Core10.Enums.Format (Format)
 import Vulkan.Core10.Enums.IndexType (IndexType)
 import Vulkan.CStruct.Extends (PeekChain)
@@ -1446,7 +1411,6 @@
 import Vulkan.Extensions.Handles (AccelerationStructureKHR(..))
 import Vulkan.Extensions.VK_EXT_debug_report (DebugReportObjectTypeEXT(..))
 import Vulkan.Extensions.Handles (DeferredOperationKHR(..))
-import Vulkan.Core10.FundamentalTypes (Flags64)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -1511,7 +1475,7 @@
                                 -> -- | @accelerationStructure@ is the acceleration structure to destroy.
                                    AccelerationStructureKHR
                                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                    -- chapter.
                                    ("allocator" ::: Maybe AllocationCallbacks)
                                 -> io ()
@@ -1543,12 +1507,12 @@
 -- @pInfo->mode@.
 --
 -- Accesses to @pInfo->src@ and @pInfo->dst@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
 -- or
@@ -1660,7 +1624,7 @@
 --
 -- -   #VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCopyAccelerationStructureKHR-buffer-03780# The @buffer@ used
@@ -1717,7 +1681,7 @@
                                 Device
                              -> -- | @deferredOperation@ is an optional
                                 -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
                                 -- for this command.
                                 DeferredOperationKHR
                              -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureInfoKHR' structure
@@ -1748,12 +1712,12 @@
 -- = Description
 --
 -- Accesses to @pInfo->src@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
 -- Accesses to the buffer indicated by @pInfo->dst.deviceAddress@ /must/ be
@@ -1927,7 +1891,7 @@
 --
 -- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783# The
@@ -1980,7 +1944,7 @@
                                         Device
                                      -> -- | @deferredOperation@ is an optional
                                         -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
                                         -- for this command.
                                         DeferredOperationKHR
                                      -> -- | @pInfo@ is a pointer to a 'CopyAccelerationStructureToMemoryInfoKHR'
@@ -2011,12 +1975,12 @@
 -- = Description
 --
 -- Accesses to @pInfo->dst@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'.
 -- Accesses to the buffer indicated by @pInfo->src.deviceAddress@ /must/ be
@@ -2158,7 +2122,7 @@
 --
 -- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782# The
@@ -2211,7 +2175,7 @@
                                         Device
                                      -> -- | @deferredOperation@ is an optional
                                         -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
                                         -- for this command.
                                         DeferredOperationKHR
                                      -> -- | @pInfo@ is a pointer to a 'CopyMemoryToAccelerationStructureInfoKHR'
@@ -2243,12 +2207,12 @@
 --
 -- Accesses to any of the acceleration structures listed in
 -- @pAccelerationStructures@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
 --
@@ -2458,7 +2422,7 @@
 --
 -- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784# The
@@ -2556,9 +2520,9 @@
 --
 -- -   #VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracingPipeline-03661#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayQuery rayQuery>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -2634,18 +2598,18 @@
 --
 -- -   #VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructure accelerationStructure>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488# If
 --     'AccelerationStructureCreateInfoKHR'::@deviceAddress@ is not zero,
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCreateAccelerationStructureKHR-device-03489# If @device@ was
 --     created with multiple physical devices, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -2695,7 +2659,7 @@
                                   -- structure.
                                   (AccelerationStructureCreateInfoKHR a)
                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter.
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io (AccelerationStructureKHR)
@@ -2756,12 +2720,12 @@
 -- Accesses to the acceleration structure scratch buffers as identified by
 -- the 'AccelerationStructureBuildGeometryInfoKHR'::@scratchData@ buffer
 -- device addresses /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
 -- or
@@ -2778,12 +2742,12 @@
 -- 'AccelerationStructureGeometryTrianglesDataKHR'::@transformData@,
 -- 'AccelerationStructureGeometryAabbsDataKHR'::@data@, and
 -- 'AccelerationStructureGeometryInstancesDataKHR'::@data@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_SHADER_READ_BIT'.
 --
 -- == Valid Usage
@@ -3344,12 +3308,12 @@
 -- 'cmdBuildAccelerationStructuresKHR'.
 --
 -- Accesses to any element of @pIndirectDeviceAddresses@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_INDIRECT_COMMAND_READ_BIT'.
 --
@@ -3838,7 +3802,7 @@
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureIndirectBuild ::accelerationStructureIndirectBuild>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureIndirectBuild ::accelerationStructureIndirectBuild>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651#
@@ -4281,7 +4245,7 @@
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureHostCommands ::accelerationStructureHostCommands>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkBuildAccelerationStructuresKHR-pInfos-03725# If
@@ -4424,7 +4388,7 @@
                                   Device
                                -> -- | @deferredOperation@ is an optional
                                   -- 'Vulkan.Extensions.Handles.DeferredOperationKHR' to
-                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
                                   -- for this command.
                                   DeferredOperationKHR
                                -> -- | @pInfos@ is a pointer to an array of @infoCount@
@@ -4499,7 +4463,7 @@
 --
 -- -   #VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504# If
 --     @device@ was created with multiple physical devices, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -4617,14 +4581,14 @@
 --
 -- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-rayTracingPipeline-03617#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayQuery rayQuery>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618# If
 --     @device@ was created with multiple physical devices, then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-bufferDeviceAddressMultiDevice bufferDeviceAddressMultiDevice>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619# If
@@ -4722,7 +4686,7 @@
 --
 -- -   #VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, each element of @pAccelerationStructures@
 --     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
@@ -4818,7 +4782,7 @@
   { -- | #features-accelerationStructure# @accelerationStructure@ indicates
     -- whether the implementation supports the acceleration structure
     -- functionality. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure Acceleration Structures>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure Acceleration Structures>.
     accelerationStructure :: Bool
   , -- | #features-accelerationStructureCaptureReplay#
     -- @accelerationStructureCaptureReplay@ indicates whether the
@@ -4908,10 +4872,10 @@
 --
 -- Due to the fact that the geometry, instance, and primitive counts are
 -- specified at acceleration structure creation as 32-bit values,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxGeometryCount maxGeometryCount>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxInstanceCount maxInstanceCount>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxGeometryCount maxGeometryCount>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxInstanceCount maxInstanceCount>,
 -- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxPrimitiveCount maxPrimitiveCount>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxPrimitiveCount maxPrimitiveCount>
 -- /must/ not exceed 232-1.
 --
 -- If the 'PhysicalDeviceAccelerationStructurePropertiesKHR' structure is
@@ -5274,7 +5238,7 @@
   , -- | @data@ is either the address of an array of device or host addresses
     -- referencing individual 'AccelerationStructureInstanceKHR' structures or
     -- packed motion instance information as described in
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-motion-instances motion instances>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-motion-instances motion instances>
     -- if @arrayOfPointers@ is 'Vulkan.Core10.FundamentalTypes.TRUE', or the
     -- address of an array of 'AccelerationStructureInstanceKHR' or
     -- 'Vulkan.Extensions.VK_NV_ray_tracing_motion_blur.AccelerationStructureMotionInstanceNV'
@@ -5407,9 +5371,9 @@
 -- of 'AccelerationStructureBuildGeometryInfoKHR' is used as the /geometry
 -- index/ during ray traversal. The geometry index is available in ray
 -- shaders via the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR built-in>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR built-in>,
 -- and is
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table-hit-shader-indexing used to determine hit and intersection shaders executed during traversal>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-binding-table-hit-shader-indexing used to determine hit and intersection shaders executed during traversal>.
 -- The geometry index is available to ray queries via the
 -- @OpRayQueryGetIntersectionGeometryIndexKHR@ instruction.
 --
@@ -5928,7 +5892,7 @@
     type' :: AccelerationStructureTypeKHR
   , -- | @deviceAddress@ is the device address requested for the acceleration
     -- structure if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-accelerationStructureCaptureReplay accelerationStructureCaptureReplay>
     -- feature is being used.
     deviceAddress :: DeviceAddress
   }
@@ -6169,6 +6133,7 @@
   peek = peekCStruct
   poke ptr poked = pokeCStruct ptr poked (pure ())
 
+-- | The Identity Matrix
 instance Zero TransformMatrixKHR where
  zero = TransformMatrixKHR
           (1,0,0,0)
@@ -6857,7 +6822,7 @@
 -- culling for this instance.
 pattern GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = GeometryInstanceFlagBitsKHR 0x00000001
 -- | 'GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR' indicates that the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-face facing determination>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-traversal-culling-face facing determination>
 -- for geometry in this instance is inverted. Because the facing is
 -- determined in object space, an instance transform does not change the
 -- winding, but a geometry transform does.
@@ -7390,517 +7355,6 @@
                           showTableAccelerationStructureCompatibilityKHR
                           conNameAccelerationStructureCompatibilityKHR
                           AccelerationStructureCompatibilityKHR
-
-
-type FormatFeatureFlags2KHR = FormatFeatureFlagBits2KHR
-
--- | VkFormatFeatureFlagBits2KHR - Bitmask specifying features supported by a
--- buffer
---
--- = Description
---
--- The following bits /may/ be set in @linearTilingFeatures@ and
--- @optimalTilingFeatures@, specifying that the features are supported by
--- <VkImage.html images> or <VkImageView.html image views> or
--- <VkSamplerYcbcrConversion.html sampler Y′CBCR conversion objects>
--- created with the queried
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'::@format@:
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR' specifies that an image
---     view /can/ be
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
---
--- -   'FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR' specifies that an image
---     view /can/ be used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
---
--- -   'FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR' specifies that an
---     image view /can/ be used as storage image that supports atomic
---     operations.
---
--- -   'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR' specifies that an image
---     view /can/ be used as a framebuffer color attachment and as an input
---     attachment.
---
--- -   'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR' specifies that an
---     image view /can/ be used as a framebuffer color attachment that
---     supports blending and as an input attachment.
---
--- -   'FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR' specifies that
---     an image view /can/ be used as a framebuffer depth\/stencil
---     attachment and as an input attachment.
---
--- -   'FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR' specifies that an image /can/ be
---     used as @srcImage@ for the
---     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
---
--- -   'FORMAT_FEATURE_2_BLIT_DST_BIT_KHR' specifies that an image /can/ be
---     used as @dstImage@ for the
---     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR' specifies
---     that if 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR' is also set, an
---     image view /can/ be used with a sampler that has either of
---     @magFilter@ or @minFilter@ set to
---     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', or @mipmapMode@ set to
---     'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'.
---     If 'FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR' is also set, an image can be
---     used as the @srcImage@ to
---     'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
---     'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a @filter@
---     of 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/ only
---     be exposed for formats that also support the
---     'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR' or
---     'FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR'.
---
---     If the format being queried is a depth\/stencil format, this bit
---     only specifies that the depth aspect (not the stencil aspect) of an
---     image of this format supports linear filtering. Where depth
---     comparison is supported it /may/ be linear filtered whether this bit
---     is present or not, but where this bit is not present the filtered
---     value /may/ be computed in an implementation-dependent manner which
---     differs from the normal rules of linear filtering. The resulting
---     value /must/ be in the range [0,1] and /should/ be proportional to,
---     or a weighted average of, the number of comparison passes or
---     failures.
---
--- -   'FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR' specifies that an image
---     /can/ be used as a source image for
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>.
---
--- -   'FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR' specifies that an image
---     /can/ be used as a destination image for
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR' specifies
---     'Vulkan.Core10.Handles.Image' /can/ be used as a sampled image with
---     a min or max
---     'Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'.
---     This bit /must/ only be exposed for formats that also support the
---     'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR'.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' specifies that
---     'Vulkan.Core10.Handles.Image' /can/ be used with a sampler that has
---     either of @magFilter@ or @minFilter@ set to
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', or be the
---     source image for a blit with @filter@ set to
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'. This bit
---     /must/ only be exposed for formats that also support the
---     'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR'. If the format being
---     queried is a depth\/stencil format, this only specifies that the
---     depth aspect is cubic filterable.
---
--- -   'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR' specifies that an
---     application /can/ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
---     using this format as a source, and that an image of this format
---     /can/ be used with a
---     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
---     @xChromaOffset@ and\/or @yChromaOffset@ of
---     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'.
---     Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be
---     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.
---     If a format does not incorporate chroma downsampling (it is not a
---     “422” or “420” format) but the implementation supports sampler
---     Y′CBCR conversion for this format, the implementation /must/ set
---     'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR'.
---
--- -   'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR' specifies that an
---     application /can/ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
---     using this format as a source, and that an image of this format
---     /can/ be used with a
---     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
---     @xChromaOffset@ and\/or @yChromaOffset@ of
---     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.
---     Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be
---     'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'. If
---     neither 'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR' nor
---     'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR' is set, the
---     application /must/ not define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
---     using this format as a source.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR'
---     specifies that an application /can/ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
---     using this format as a source with @chromaFilter@ set to
---     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR'
---     specifies that the format can have different chroma, min, and mag
---     filters.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR'
---     specifies that reconstruction is explicit, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction>.
---     If this bit is not present, reconstruction is implicit by default.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR'
---     specifies that reconstruction /can/ be forcibly made explicit by
---     setting
---     'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@
---     to 'Vulkan.Core10.FundamentalTypes.TRUE'. If the format being
---     queried supports
---     'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR'
---     it /must/ also support
---     'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR'.
---
--- -   'FORMAT_FEATURE_2_DISJOINT_BIT_KHR' specifies that a multi-planar
---     image /can/ have the
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
---     set during image creation. An implementation /must/ not set
---     'FORMAT_FEATURE_2_DISJOINT_BIT_KHR' for /single-plane formats/.
---
--- -   'FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an
---     image view /can/ be used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
---
--- -   'FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---     specifies that an image view /can/ be used as a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
---     An implementation /must/ not set this feature for formats with
---     numeric type other than @*UINT@, or set it as a buffer feature.
---
--- -   'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR' specifies
---     that image views created with this format /can/ be used as
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
---     for read operations without specifying a format.
---
--- -   'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR' specifies
---     that image views created with this format /can/ be used as
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
---     for write operations without specifying a format.
---
--- -   'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR' specifies
---     that image views created with this format /can/ be used for depth
---     comparison performed by @OpImage*Dref@ instructions.
---
--- -   'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
---     format is supported as a renderable
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary Linear Color Attachment>.
---     This bit will be set for renderable color formats in the
---     @linearTilingFeatures@. This /must/ not be set in the
---     @optimalTilingFeatures@ or @bufferFeatures@ members.
---
--- The following bits /may/ be set in @bufferFeatures@, specifying that the
--- features are supported by <VkBuffer.html buffers> or
--- <VkBufferView.html buffer views> created with the queried
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFormatProperties2'::@format@:
---
--- -   'FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR' specifies that the
---     format /can/ be used to create a buffer view that /can/ be bound to
---     a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
---     descriptor.
---
--- -   'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR' specifies that the
---     format /can/ be used to create a buffer view that /can/ be bound to
---     a
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     descriptor.
---
--- -   'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR' specifies
---     that atomic operations are supported on
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
---     with this format.
---
--- -   'FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR' specifies that the format
---     /can/ be used as a vertex attribute format
---     ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).
---
--- -   'FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
---     specifies that the format /can/ be used as the vertex format when
---     creating an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure>
---     ('AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@).
---     This format /can/ also be used as the vertex format in host memory
---     when doing
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
---     builds.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
-newtype FormatFeatureFlagBits2KHR = FormatFeatureFlagBits2KHR Flags64
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR' specifies that an image view
--- /can/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled from>.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR               = FormatFeatureFlagBits2KHR 0x0000000000000001
--- | 'FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR' specifies that an image view
--- /can/ be used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>.
-pattern FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR               = FormatFeatureFlagBits2KHR 0x0000000000000002
--- | 'FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR' specifies that an image
--- view /can/ be used as storage image that supports atomic operations.
-pattern FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR        = FormatFeatureFlagBits2KHR 0x0000000000000004
--- | 'FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR' specifies that the
--- format /can/ be used to create a buffer view that /can/ be bound to a
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER'
--- descriptor.
-pattern FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR        = FormatFeatureFlagBits2KHR 0x0000000000000008
--- | 'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR' specifies that the
--- format /can/ be used to create a buffer view that /can/ be bound to a
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
--- descriptor.
-pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR        = FormatFeatureFlagBits2KHR 0x0000000000000010
--- | 'FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR' specifies that
--- atomic operations are supported on
--- 'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER'
--- with this format.
-pattern FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = FormatFeatureFlagBits2KHR 0x0000000000000020
--- | 'FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR' specifies that the format /can/
--- be used as a vertex attribute format
--- ('Vulkan.Core10.Pipeline.VertexInputAttributeDescription'::@format@).
-pattern FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR               = FormatFeatureFlagBits2KHR 0x0000000000000040
--- | 'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR' specifies that an image view
--- /can/ be used as a framebuffer color attachment and as an input
--- attachment.
-pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR            = FormatFeatureFlagBits2KHR 0x0000000000000080
--- | 'FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR' specifies that an
--- image view /can/ be used as a framebuffer color attachment that supports
--- blending and as an input attachment.
-pattern FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR      = FormatFeatureFlagBits2KHR 0x0000000000000100
--- | 'FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR' specifies that an
--- image view /can/ be used as a framebuffer depth\/stencil attachment and
--- as an input attachment.
-pattern FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR    = FormatFeatureFlagBits2KHR 0x0000000000000200
--- | 'FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR' specifies that an image /can/ be
--- used as @srcImage@ for the
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
-pattern FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR                    = FormatFeatureFlagBits2KHR 0x0000000000000400
--- | 'FORMAT_FEATURE_2_BLIT_DST_BIT_KHR' specifies that an image /can/ be
--- used as @dstImage@ for the
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' commands.
-pattern FORMAT_FEATURE_2_BLIT_DST_BIT_KHR                    = FormatFeatureFlagBits2KHR 0x0000000000000800
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR' specifies that if
--- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR' is also set, an image view
--- /can/ be used with a sampler that has either of @magFilter@ or
--- @minFilter@ set to 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', or
--- @mipmapMode@ set to
--- 'Vulkan.Core10.Enums.SamplerMipmapMode.SAMPLER_MIPMAP_MODE_LINEAR'. If
--- 'FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR' is also set, an image can be used as
--- the @srcImage@ to
--- 'Vulkan.Extensions.VK_KHR_copy_commands2.cmdBlitImage2KHR' and
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage' with a @filter@ of
--- 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'. This bit /must/ only be
--- exposed for formats that also support the
--- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR' or
--- 'FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR'.
---
--- If the format being queried is a depth\/stencil format, this bit only
--- specifies that the depth aspect (not the stencil aspect) of an image of
--- this format supports linear filtering. Where depth comparison is
--- supported it /may/ be linear filtered whether this bit is present or
--- not, but where this bit is not present the filtered value /may/ be
--- computed in an implementation-dependent manner which differs from the
--- normal rules of linear filtering. The resulting value /must/ be in the
--- range [0,1] and /should/ be proportional to, or a weighted average of,
--- the number of comparison passes or failures.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = FormatFeatureFlagBits2KHR 0x0000000000001000
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT' specifies that
--- 'Vulkan.Core10.Handles.Image' /can/ be used with a sampler that has
--- either of @magFilter@ or @minFilter@ set to
--- 'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', or be the
--- source image for a blit with @filter@ set to
--- 'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT'. This bit
--- /must/ only be exposed for formats that also support the
--- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR'. If the format being queried is
--- a depth\/stencil format, this only specifies that the depth aspect is
--- cubic filterable.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT  = FormatFeatureFlagBits2KHR 0x0000000000002000
--- | 'FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR' specifies that an image /can/ be
--- used as a source image for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>.
-pattern FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR                = FormatFeatureFlagBits2KHR 0x0000000000004000
--- | 'FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR' specifies that an image /can/ be
--- used as a destination image for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>.
-pattern FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR                = FormatFeatureFlagBits2KHR 0x0000000000008000
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR' specifies
--- 'Vulkan.Core10.Handles.Image' /can/ be used as a sampled image with a
--- min or max
--- 'Vulkan.Core12.Enums.SamplerReductionMode.SamplerReductionMode'. This
--- bit /must/ only be exposed for formats that also support the
--- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR'.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = FormatFeatureFlagBits2KHR 0x0000000000010000
--- | 'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR' specifies that an
--- application /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
--- using this format as a source, and that an image of this format /can/ be
--- used with a
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
--- @xChromaOffset@ and\/or @yChromaOffset@ of
--- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'. Otherwise
--- both @xChromaOffset@ and @yChromaOffset@ /must/ be
--- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'. If a
--- format does not incorporate chroma downsampling (it is not a “422” or
--- “420” format) but the implementation supports sampler Y′CBCR conversion
--- for this format, the implementation /must/ set
--- 'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR'.
-pattern FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR     = FormatFeatureFlagBits2KHR 0x0000000000020000
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR'
--- specifies that an application /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
--- using this format as a source with @chromaFilter@ set to
--- 'Vulkan.Core10.Enums.Filter.FILTER_LINEAR'.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR =
-  FormatFeatureFlagBits2KHR 0x0000000000040000
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR'
--- specifies that the format can have different chroma, min, and mag
--- filters.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR =
-  FormatFeatureFlagBits2KHR 0x0000000000080000
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR'
--- specifies that reconstruction is explicit, as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-chroma-reconstruction>.
--- If this bit is not present, reconstruction is implicit by default.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR =
-  FormatFeatureFlagBits2KHR 0x0000000000100000
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR'
--- specifies that reconstruction /can/ be forcibly made explicit by setting
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'::@forceExplicitReconstruction@
--- to 'Vulkan.Core10.FundamentalTypes.TRUE'. If the format being queried
--- supports
--- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR'
--- it /must/ also support
--- 'FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR'.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR =
-  FormatFeatureFlagBits2KHR 0x0000000000200000
--- | 'FORMAT_FEATURE_2_DISJOINT_BIT_KHR' specifies that a multi-planar image
--- /can/ have the
--- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT' set
--- during image creation. An implementation /must/ not set
--- 'FORMAT_FEATURE_2_DISJOINT_BIT_KHR' for /single-plane formats/.
-pattern FORMAT_FEATURE_2_DISJOINT_BIT_KHR                             = FormatFeatureFlagBits2KHR 0x0000000000400000
--- | 'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR' specifies that an
--- application /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
--- using this format as a source, and that an image of this format /can/ be
--- used with a
--- 'Vulkan.Core11.Promoted_From_VK_KHR_sampler_ycbcr_conversion.SamplerYcbcrConversionCreateInfo'
--- @xChromaOffset@ and\/or @yChromaOffset@ of
--- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_COSITED_EVEN'.
--- Otherwise both @xChromaOffset@ and @yChromaOffset@ /must/ be
--- 'Vulkan.Core11.Enums.ChromaLocation.CHROMA_LOCATION_MIDPOINT'. If
--- neither 'FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR' nor
--- 'FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR' is set, the
--- application /must/ not define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-YCbCr-conversion sampler Y′CBCR conversion>
--- using this format as a source.
-pattern FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR               = FormatFeatureFlagBits2KHR 0x0000000000800000
--- | 'FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR' specifies that
--- image views created with this format /can/ be used as
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
--- for read operations without specifying a format.
-pattern FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR          = FormatFeatureFlagBits2KHR 0x0000000080000000
--- | 'FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR' specifies that
--- image views created with this format /can/ be used as
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage images>
--- for write operations without specifying a format.
-pattern FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR         = FormatFeatureFlagBits2KHR 0x0000000100000000
--- | 'FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR' specifies that
--- image views created with this format /can/ be used for depth comparison
--- performed by @OpImage*Dref@ instructions.
-pattern FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR       = FormatFeatureFlagBits2KHR 0x0000000200000000
--- | 'FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV' specifies that the
--- format is supported as a renderable
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary Linear Color Attachment>.
--- This bit will be set for renderable color formats in the
--- @linearTilingFeatures@. This /must/ not be set in the
--- @optimalTilingFeatures@ or @bufferFeatures@ members.
-pattern FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV               = FormatFeatureFlagBits2KHR 0x0000004000000000
--- | 'FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
--- that an image view /can/ be used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
--- An implementation /must/ not set this feature for formats with numeric
--- type other than @*UINT@, or set it as a buffer feature.
-pattern FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR     = FormatFeatureFlagBits2KHR 0x0000000040000000
--- | 'FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT' specifies that an image
--- view /can/ be used as a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>.
-pattern FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT                 = FormatFeatureFlagBits2KHR 0x0000000001000000
--- | 'FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
--- specifies that the format /can/ be used as the vertex format when
--- creating an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure>
--- ('AccelerationStructureGeometryTrianglesDataKHR'::@vertexFormat@). This
--- format /can/ also be used as the vertex format in host memory when doing
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
--- builds.
-pattern FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = FormatFeatureFlagBits2KHR 0x0000000020000000
-
-conNameFormatFeatureFlagBits2KHR :: String
-conNameFormatFeatureFlagBits2KHR = "FormatFeatureFlagBits2KHR"
-
-enumPrefixFormatFeatureFlagBits2KHR :: String
-enumPrefixFormatFeatureFlagBits2KHR = "FORMAT_FEATURE_2_"
-
-showTableFormatFeatureFlagBits2KHR :: [(FormatFeatureFlagBits2KHR, String)]
-showTableFormatFeatureFlagBits2KHR =
-  [ (FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR              , "SAMPLED_IMAGE_BIT_KHR")
-  , (FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR              , "STORAGE_IMAGE_BIT_KHR")
-  , (FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR       , "STORAGE_IMAGE_ATOMIC_BIT_KHR")
-  , (FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR       , "UNIFORM_TEXEL_BUFFER_BIT_KHR")
-  , (FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR       , "STORAGE_TEXEL_BUFFER_BIT_KHR")
-  , (FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR, "STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR")
-  , (FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR              , "VERTEX_BUFFER_BIT_KHR")
-  , (FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR           , "COLOR_ATTACHMENT_BIT_KHR")
-  , (FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR     , "COLOR_ATTACHMENT_BLEND_BIT_KHR")
-  , (FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR   , "DEPTH_STENCIL_ATTACHMENT_BIT_KHR")
-  , (FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR                   , "BLIT_SRC_BIT_KHR")
-  , (FORMAT_FEATURE_2_BLIT_DST_BIT_KHR                   , "BLIT_DST_BIT_KHR")
-  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR, "SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR")
-  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT , "SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT")
-  , (FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR               , "TRANSFER_SRC_BIT_KHR")
-  , (FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR               , "TRANSFER_DST_BIT_KHR")
-  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR, "SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR")
-  , (FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR    , "MIDPOINT_CHROMA_SAMPLES_BIT_KHR")
-  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR
-    , "SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR"
-    )
-  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR
-    , "SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR"
-    )
-  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR
-    , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR"
-    )
-  , ( FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR
-    , "SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR"
-    )
-  , (FORMAT_FEATURE_2_DISJOINT_BIT_KHR                            , "DISJOINT_BIT_KHR")
-  , (FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR              , "COSITED_CHROMA_SAMPLES_BIT_KHR")
-  , (FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR         , "STORAGE_READ_WITHOUT_FORMAT_BIT_KHR")
-  , (FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR        , "STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR")
-  , (FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR      , "SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR")
-  , (FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV              , "LINEAR_COLOR_ATTACHMENT_BIT_NV")
-  , (FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR    , "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")
-  , (FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT                , "FRAGMENT_DENSITY_MAP_BIT_EXT")
-  , (FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, "ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR")
-  ]
-
-instance Show FormatFeatureFlagBits2KHR where
-  showsPrec = enumShowsPrec enumPrefixFormatFeatureFlagBits2KHR
-                            showTableFormatFeatureFlagBits2KHR
-                            conNameFormatFeatureFlagBits2KHR
-                            (\(FormatFeatureFlagBits2KHR x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read FormatFeatureFlagBits2KHR where
-  readPrec = enumReadPrec enumPrefixFormatFeatureFlagBits2KHR
-                          showTableFormatFeatureFlagBits2KHR
-                          conNameFormatFeatureFlagBits2KHR
-                          FormatFeatureFlagBits2KHR
 
 
 type KHR_ACCELERATION_STRUCTURE_SPEC_VERSION = 13
diff --git a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_acceleration_structure.hs-boot
@@ -355,9 +355,10 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>
 -- is supported:
 --
--- -   Extending 'FormatFeatureFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR'
 --
 -- == Issues
 --
@@ -375,7 +376,7 @@
 --     'cmdCopyMemoryToAccelerationStructureKHR')
 --
 -- -   document
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims inactive primitives and instances>
 --
 -- -   added 'PhysicalDeviceAccelerationStructureFeaturesKHR' structure
 --
@@ -383,7 +384,7 @@
 --     ('cmdBuildAccelerationStructuresIndirectKHR')
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#host-acceleration-structure host acceleration structure>
 --     commands
 --
 -- -   reworked geometry structures so they could be better shared between
@@ -654,7 +655,7 @@
 --         structure and require one of them be @NULL@
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     support for acceleration structures
 --
 -- -   changed the @update@ member of
@@ -1146,7 +1147,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_acceleration_structure Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_android_surface.hs b/src/Vulkan/Extensions/VK_KHR_android_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_android_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_android_surface.hs
@@ -155,7 +155,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -312,7 +312,7 @@
                            AndroidSurfaceCreateInfoKHR
                         -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                            -- surface object when there is no more specific allocator available (see
-                           -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                            ("allocator" ::: Maybe AllocationCallbacks)
                         -> io (SurfaceKHR)
 createAndroidSurfaceKHR instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_KHR_android_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_android_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_android_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_android_surface.hs-boot
@@ -155,7 +155,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_android_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_bind_memory2.hs b/src/Vulkan/Extensions/VK_KHR_bind_memory2.hs
--- a/src/Vulkan/Extensions/VK_KHR_bind_memory2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_bind_memory2.hs
@@ -109,7 +109,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_bind_memory2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_bind_memory2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs b/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs
--- a/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs
+++ b/src/Vulkan/Extensions/VK_KHR_buffer_device_address.hs
@@ -195,7 +195,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddresses>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PhysicalStorageBufferAddresses PhysicalStorageBufferAddresses>
 --
 -- == Version History
 --
@@ -215,7 +215,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_buffer_device_address Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_buffer_device_address Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs b/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs
--- a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs
@@ -21,3239 +21,324 @@
 --
 --     -   Requires Vulkan 1.0
 --
--- [__Contact__]
---
---     -   Jeff Leger
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_copy_commands2] @jackohound%0A<<Here describe the issue or question you have about the VK_KHR_copy_commands2 extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-07-06
---
--- [__Interactions and External Dependencies__]
---
---     -   None
---
--- [__Contributors__]
---
---     -   Jeff Leger, Qualcomm
---
---     -   Tobias Hector, AMD
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Tom Olson, ARM
---
--- == Description
---
--- This extension provides extensible versions of the Vulkan buffer and
--- image copy commands. The new commands are functionally identical to the
--- core commands, except that their copy parameters are specified using
--- extensible structures that can be used to pass extension-specific
--- information.
---
--- The following extensible copy commands are introduced with this
--- extension: 'cmdCopyBuffer2KHR', 'cmdCopyImage2KHR',
--- 'cmdCopyBufferToImage2KHR', 'cmdCopyImageToBuffer2KHR',
--- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command contains an
--- @*Info2KHR@ structure parameter that includes @sType@\/@pNext@ members.
--- Lower level structures describing each region to be copied are also
--- extended with @sType@\/@pNext@ members.
---
--- == New Commands
---
--- -   'cmdBlitImage2KHR'
---
--- -   'cmdCopyBuffer2KHR'
---
--- -   'cmdCopyBufferToImage2KHR'
---
--- -   'cmdCopyImage2KHR'
---
--- -   'cmdCopyImageToBuffer2KHR'
---
--- -   'cmdResolveImage2KHR'
---
--- == New Structures
---
--- -   'BlitImageInfo2KHR'
---
--- -   'BufferCopy2KHR'
---
--- -   'BufferImageCopy2KHR'
---
--- -   'CopyBufferInfo2KHR'
---
--- -   'CopyBufferToImageInfo2KHR'
---
--- -   'CopyImageInfo2KHR'
---
--- -   'CopyImageToBufferInfo2KHR'
---
--- -   'ImageBlit2KHR'
---
--- -   'ImageCopy2KHR'
---
--- -   'ImageResolve2KHR'
---
--- -   'ResolveImageInfo2KHR'
---
--- == New Enum Constants
---
--- -   'KHR_COPY_COMMANDS_2_EXTENSION_NAME'
---
--- -   'KHR_COPY_COMMANDS_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_COPY_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_BLIT_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COPY_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR'
---
--- == Version History
---
--- -   Revision 1, 2020-07-06 (Jeff Leger)
---
---     -   Internal revisions
---
--- == See Also
---
--- 'BlitImageInfo2KHR', 'BufferCopy2KHR', 'BufferImageCopy2KHR',
--- 'CopyBufferInfo2KHR', 'CopyBufferToImageInfo2KHR', 'CopyImageInfo2KHR',
--- 'CopyImageToBufferInfo2KHR', 'ImageBlit2KHR', 'ImageCopy2KHR',
--- 'ImageResolve2KHR', 'ResolveImageInfo2KHR', 'cmdBlitImage2KHR',
--- 'cmdCopyBuffer2KHR', 'cmdCopyBufferToImage2KHR', 'cmdCopyImage2KHR',
--- 'cmdCopyImageToBuffer2KHR', 'cmdResolveImage2KHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_copy_commands2  ( cmdCopyBuffer2KHR
-                                                , cmdCopyImage2KHR
-                                                , cmdBlitImage2KHR
-                                                , cmdCopyBufferToImage2KHR
-                                                , cmdCopyImageToBuffer2KHR
-                                                , cmdResolveImage2KHR
-                                                , BufferCopy2KHR(..)
-                                                , ImageCopy2KHR(..)
-                                                , ImageBlit2KHR(..)
-                                                , BufferImageCopy2KHR(..)
-                                                , ImageResolve2KHR(..)
-                                                , CopyBufferInfo2KHR(..)
-                                                , CopyImageInfo2KHR(..)
-                                                , BlitImageInfo2KHR(..)
-                                                , CopyBufferToImageInfo2KHR(..)
-                                                , CopyImageToBufferInfo2KHR(..)
-                                                , ResolveImageInfo2KHR(..)
-                                                , KHR_COPY_COMMANDS_2_SPEC_VERSION
-                                                , pattern KHR_COPY_COMMANDS_2_SPEC_VERSION
-                                                , KHR_COPY_COMMANDS_2_EXTENSION_NAME
-                                                , pattern KHR_COPY_COMMANDS_2_EXTENSION_NAME
-                                                ) where
-
-import Vulkan.CStruct.Utils (FixedArray)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.IO (throwIO)
-import GHC.Ptr (castPtr)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.String (IsString)
-import Data.Type.Equality ((:~:)(Refl))
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.CStruct.Utils (lowerArrayPtr)
-import Vulkan.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.Core10.Handles (Buffer)
-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 {-# SOURCE #-} Vulkan.Extensions.VK_QCOM_rotated_copy_commands (CopyCommandTransformInfoQCOM)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBlitImage2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBuffer2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyBufferToImage2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImage2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdCopyImageToBuffer2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdResolveImage2KHR))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.FundamentalTypes (Extent3D)
-import Vulkan.Core10.Enums.Filter (Filter)
-import Vulkan.Core10.Handles (Image)
-import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import Vulkan.Core10.CommandBufferBuilding (ImageSubresourceLayers)
-import Vulkan.Core10.FundamentalTypes (Offset3D)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_COPY_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_BLIT_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_COPY_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyBuffer2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyBufferInfo2KHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyBufferInfo2KHR -> IO ()
-
--- | vkCmdCopyBuffer2KHR - Copy data between buffer regions
---
--- = Description
---
--- This command is functionally identical to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer', but includes
--- extensible sub-structures that include @sType@ and @pNext@ parameters,
--- allowing them to be more easily extended.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyBuffer2KHR-commandBuffer-01822# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyBuffer2KHR-commandBuffer-01823# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyBuffer2KHR-commandBuffer-01824# If @commandBuffer@ is
---     a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyBuffer2KHR-pCopyBufferInfo-parameter#
---     @pCopyBufferInfo@ /must/ be a valid pointer to a valid
---     'CopyBufferInfo2KHR' structure
---
--- -   #VUID-vkCmdCopyBuffer2KHR-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-vkCmdCopyBuffer2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyBuffer2KHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyBufferInfo2KHR'
-cmdCopyBuffer2KHR :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which the command will be
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @pCopyBufferInfo@ is a pointer to a 'CopyBufferInfo2KHR' structure
-                     -- describing the copy parameters.
-                     CopyBufferInfo2KHR
-                  -> io ()
-cmdCopyBuffer2KHR commandBuffer copyBufferInfo = liftIO . evalContT $ do
-  let vkCmdCopyBuffer2KHRPtr = pVkCmdCopyBuffer2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyBuffer2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBuffer2KHR is null" Nothing Nothing
-  let vkCmdCopyBuffer2KHR' = mkVkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHRPtr
-  pCopyBufferInfo <- ContT $ withCStruct (copyBufferInfo)
-  lift $ traceAroundEvent "vkCmdCopyBuffer2KHR" (vkCmdCopyBuffer2KHR' (commandBufferHandle (commandBuffer)) pCopyBufferInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyImage2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyImageInfo2KHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyImageInfo2KHR -> IO ()
-
--- | vkCmdCopyImage2KHR - Copy data between images
---
--- = Description
---
--- This command is functionally identical to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImage', but includes
--- extensible sub-structures that include @sType@ and @pNext@ parameters,
--- allowing them to be more easily extended.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyImage2KHR-commandBuffer-01825# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyImage2KHR-commandBuffer-01826# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyImage2KHR-commandBuffer-01827# If @commandBuffer@ is
---     a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyImage2KHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyImage2KHR-pCopyImageInfo-parameter# @pCopyImageInfo@
---     /must/ be a valid pointer to a valid 'CopyImageInfo2KHR' structure
---
--- -   #VUID-vkCmdCopyImage2KHR-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-vkCmdCopyImage2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyImage2KHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyImageInfo2KHR'
-cmdCopyImage2KHR :: forall io
-                  . (MonadIO io)
-                 => -- | @commandBuffer@ is the command buffer into which the command will be
-                    -- recorded.
-                    CommandBuffer
-                 -> -- | @pCopyImageInfo@ is a pointer to a 'CopyImageInfo2KHR' structure
-                    -- describing the copy parameters.
-                    CopyImageInfo2KHR
-                 -> io ()
-cmdCopyImage2KHR commandBuffer copyImageInfo = liftIO . evalContT $ do
-  let vkCmdCopyImage2KHRPtr = pVkCmdCopyImage2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyImage2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImage2KHR is null" Nothing Nothing
-  let vkCmdCopyImage2KHR' = mkVkCmdCopyImage2KHR vkCmdCopyImage2KHRPtr
-  pCopyImageInfo <- ContT $ withCStruct (copyImageInfo)
-  lift $ traceAroundEvent "vkCmdCopyImage2KHR" (vkCmdCopyImage2KHR' (commandBufferHandle (commandBuffer)) pCopyImageInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBlitImage2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr BlitImageInfo2KHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr BlitImageInfo2KHR -> IO ()
-
--- | vkCmdBlitImage2KHR - Copy regions of an image, potentially performing
--- format conversion,
---
--- = Description
---
--- This command is functionally identical to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage', but includes
--- extensible sub-structures that include @sType@ and @pNext@ parameters,
--- allowing them to be more easily extended.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBlitImage2KHR-commandBuffer-01834# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdBlitImage2KHR-commandBuffer-01835# If @commandBuffer@ is
---     an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdBlitImage2KHR-commandBuffer-01836# If @commandBuffer@ is
---     a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBlitImage2KHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBlitImage2KHR-pBlitImageInfo-parameter# @pBlitImageInfo@
---     /must/ be a valid pointer to a valid 'BlitImageInfo2KHR' structure
---
--- -   #VUID-vkCmdBlitImage2KHR-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-vkCmdBlitImage2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBlitImage2KHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'BlitImageInfo2KHR', 'Vulkan.Core10.Handles.CommandBuffer'
-cmdBlitImage2KHR :: forall io
-                  . (MonadIO io)
-                 => -- | @commandBuffer@ is the command buffer into which the command will be
-                    -- recorded.
-                    CommandBuffer
-                 -> -- | @pBlitImageInfo@ is a pointer to a 'BlitImageInfo2KHR' structure
-                    -- describing the blit parameters.
-                    BlitImageInfo2KHR
-                 -> io ()
-cmdBlitImage2KHR commandBuffer blitImageInfo = liftIO . evalContT $ do
-  let vkCmdBlitImage2KHRPtr = pVkCmdBlitImage2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBlitImage2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBlitImage2KHR is null" Nothing Nothing
-  let vkCmdBlitImage2KHR' = mkVkCmdBlitImage2KHR vkCmdBlitImage2KHRPtr
-  pBlitImageInfo <- ContT $ withCStruct (blitImageInfo)
-  lift $ traceAroundEvent "vkCmdBlitImage2KHR" (vkCmdBlitImage2KHR' (commandBufferHandle (commandBuffer)) pBlitImageInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyBufferToImage2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyBufferToImageInfo2KHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyBufferToImageInfo2KHR -> IO ()
-
--- | vkCmdCopyBufferToImage2KHR - Copy data from a buffer into an image
---
--- = Description
---
--- This command is functionally identical to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBufferToImage', but includes
--- extensible sub-structures that include @sType@ and @pNext@ parameters,
--- allowing them to be more easily extended.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01828# If
---     @commandBuffer@ is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01829# If
---     @commandBuffer@ is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01830# If
---     @commandBuffer@ is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyBufferToImage2KHR-pCopyBufferToImageInfo-parameter#
---     @pCopyBufferToImageInfo@ /must/ be a valid pointer to a valid
---     'CopyBufferToImageInfo2KHR' structure
---
--- -   #VUID-vkCmdCopyBufferToImage2KHR-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-vkCmdCopyBufferToImage2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyBufferToImage2KHR-renderpass# This command /must/
---     only be called outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyBufferToImageInfo2KHR'
-cmdCopyBufferToImage2KHR :: forall io
-                          . (MonadIO io)
-                         => -- | @commandBuffer@ is the command buffer into which the command will be
-                            -- recorded.
-                            CommandBuffer
-                         -> -- | @pCopyBufferToImageInfo@ is a pointer to a 'CopyBufferToImageInfo2KHR'
-                            -- structure describing the copy parameters.
-                            CopyBufferToImageInfo2KHR
-                         -> io ()
-cmdCopyBufferToImage2KHR commandBuffer copyBufferToImageInfo = liftIO . evalContT $ do
-  let vkCmdCopyBufferToImage2KHRPtr = pVkCmdCopyBufferToImage2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyBufferToImage2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyBufferToImage2KHR is null" Nothing Nothing
-  let vkCmdCopyBufferToImage2KHR' = mkVkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHRPtr
-  pCopyBufferToImageInfo <- ContT $ withCStruct (copyBufferToImageInfo)
-  lift $ traceAroundEvent "vkCmdCopyBufferToImage2KHR" (vkCmdCopyBufferToImage2KHR' (commandBufferHandle (commandBuffer)) pCopyBufferToImageInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdCopyImageToBuffer2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr CopyImageToBufferInfo2KHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr CopyImageToBufferInfo2KHR -> IO ()
-
--- | vkCmdCopyImageToBuffer2KHR - Copy image data into a buffer
---
--- = Description
---
--- This command is functionally identical to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyImageToBuffer', but includes
--- extensible sub-structures that include @sType@ and @pNext@ parameters,
--- allowing them to be more easily extended.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01831# If
---     @commandBuffer@ is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01832# If
---     @commandBuffer@ is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be a protected buffer
---
--- -   #VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01833# If
---     @commandBuffer@ is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstBuffer@ /must/ not be an unprotected buffer
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdCopyImageToBuffer2KHR-pCopyImageToBufferInfo-parameter#
---     @pCopyImageToBufferInfo@ /must/ be a valid pointer to a valid
---     'CopyImageToBufferInfo2KHR' structure
---
--- -   #VUID-vkCmdCopyImageToBuffer2KHR-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-vkCmdCopyImageToBuffer2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdCopyImageToBuffer2KHR-renderpass# This command /must/
---     only be called outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'CopyImageToBufferInfo2KHR'
-cmdCopyImageToBuffer2KHR :: forall io
-                          . (MonadIO io)
-                         => -- | @commandBuffer@ is the command buffer into which the command will be
-                            -- recorded.
-                            CommandBuffer
-                         -> -- | @pCopyImageToBufferInfo@ is a pointer to a 'CopyImageToBufferInfo2KHR'
-                            -- structure describing the copy parameters.
-                            CopyImageToBufferInfo2KHR
-                         -> io ()
-cmdCopyImageToBuffer2KHR commandBuffer copyImageToBufferInfo = liftIO . evalContT $ do
-  let vkCmdCopyImageToBuffer2KHRPtr = pVkCmdCopyImageToBuffer2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdCopyImageToBuffer2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdCopyImageToBuffer2KHR is null" Nothing Nothing
-  let vkCmdCopyImageToBuffer2KHR' = mkVkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHRPtr
-  pCopyImageToBufferInfo <- ContT $ withCStruct (copyImageToBufferInfo)
-  lift $ traceAroundEvent "vkCmdCopyImageToBuffer2KHR" (vkCmdCopyImageToBuffer2KHR' (commandBufferHandle (commandBuffer)) pCopyImageToBufferInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdResolveImage2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr ResolveImageInfo2KHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr ResolveImageInfo2KHR -> IO ()
-
--- | vkCmdResolveImage2KHR - Resolve regions of an image
---
--- = Description
---
--- This command is functionally identical to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage', but includes
--- extensible sub-structures that include @sType@ and @pNext@ parameters,
--- allowing them to be more easily extended.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdResolveImage2KHR-commandBuffer-01837# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @srcImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdResolveImage2KHR-commandBuffer-01838# If @commandBuffer@
---     is an unprotected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be a protected image
---
--- -   #VUID-vkCmdResolveImage2KHR-commandBuffer-01839# If @commandBuffer@
---     is a protected command buffer and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-protectedNoFault protectedNoFault>
---     is not supported, @dstImage@ /must/ not be an unprotected image
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdResolveImage2KHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdResolveImage2KHR-pResolveImageInfo-parameter#
---     @pResolveImageInfo@ /must/ be a valid pointer to a valid
---     'ResolveImageInfo2KHR' structure
---
--- -   #VUID-vkCmdResolveImage2KHR-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-vkCmdResolveImage2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdResolveImage2KHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'ResolveImageInfo2KHR'
-cmdResolveImage2KHR :: forall io
-                     . (MonadIO io)
-                    => -- | @commandBuffer@ is the command buffer into which the command will be
-                       -- recorded.
-                       CommandBuffer
-                    -> -- | @pResolveImageInfo@ is a pointer to a 'ResolveImageInfo2KHR' structure
-                       -- describing the resolve parameters.
-                       ResolveImageInfo2KHR
-                    -> io ()
-cmdResolveImage2KHR commandBuffer resolveImageInfo = liftIO . evalContT $ do
-  let vkCmdResolveImage2KHRPtr = pVkCmdResolveImage2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdResolveImage2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResolveImage2KHR is null" Nothing Nothing
-  let vkCmdResolveImage2KHR' = mkVkCmdResolveImage2KHR vkCmdResolveImage2KHRPtr
-  pResolveImageInfo <- ContT $ withCStruct (resolveImageInfo)
-  lift $ traceAroundEvent "vkCmdResolveImage2KHR" (vkCmdResolveImage2KHR' (commandBufferHandle (commandBuffer)) pResolveImageInfo)
-  pure $ ()
-
-
--- | VkBufferCopy2KHR - Structure specifying a buffer copy operation
---
--- == Valid Usage
---
--- -   #VUID-VkBufferCopy2KHR-size-01988# The @size@ /must/ be greater than
---     @0@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBufferCopy2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_COPY_2_KHR'
---
--- -   #VUID-VkBufferCopy2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'CopyBufferInfo2KHR', 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data BufferCopy2KHR = BufferCopy2KHR
-  { -- | @srcOffset@ is the starting offset in bytes from the start of
-    -- @srcBuffer@.
-    srcOffset :: DeviceSize
-  , -- | @dstOffset@ is the starting offset in bytes from the start of
-    -- @dstBuffer@.
-    dstOffset :: DeviceSize
-  , -- | @size@ is the number of bytes to copy.
-    size :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferCopy2KHR)
-#endif
-deriving instance Show BufferCopy2KHR
-
-instance ToCStruct BufferCopy2KHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferCopy2KHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_COPY_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (srcOffset)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (dstOffset)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (size)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_COPY_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct BufferCopy2KHR where
-  peekCStruct p = do
-    srcOffset <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    dstOffset <- peek @DeviceSize ((p `plusPtr` 24 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 32 :: Ptr DeviceSize))
-    pure $ BufferCopy2KHR
-             srcOffset dstOffset size
-
-instance Storable BufferCopy2KHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BufferCopy2KHR where
-  zero = BufferCopy2KHR
-           zero
-           zero
-           zero
-
-
--- | VkImageCopy2KHR - Structure specifying an image copy operation
---
--- == Valid Usage
---
--- -   #VUID-VkImageCopy2KHR-extent-00140# The number of slices of the
---     @extent@ (for 3D) or layers of the @srcSubresource@ (for non-3D)
---     /must/ match the number of slices of the @extent@ (for 3D) or layers
---     of the @dstSubresource@ (for non-3D)
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageCopy2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COPY_2_KHR'
---
--- -   #VUID-VkImageCopy2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkImageCopy2KHR-srcSubresource-parameter# @srcSubresource@
---     /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- -   #VUID-VkImageCopy2KHR-dstSubresource-parameter# @dstSubresource@
---     /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'CopyImageInfo2KHR', 'Vulkan.Core10.FundamentalTypes.Extent3D',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data ImageCopy2KHR = ImageCopy2KHR
-  { -- | @srcSubresource@ and @dstSubresource@ are
-    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' structures
-    -- specifying the image subresources of the images used for the source and
-    -- destination image data, respectively.
-    srcSubresource :: ImageSubresourceLayers
-  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
-    -- in texels of the sub-regions of the source and destination image data.
-    srcOffset :: Offset3D
-  , -- No documentation found for Nested "VkImageCopy2KHR" "dstSubresource"
-    dstSubresource :: ImageSubresourceLayers
-  , -- No documentation found for Nested "VkImageCopy2KHR" "dstOffset"
-    dstOffset :: Offset3D
-  , -- | @extent@ is the size in texels of the image to copy in @width@, @height@
-    -- and @depth@.
-    extent :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageCopy2KHR)
-#endif
-deriving instance Show ImageCopy2KHR
-
-instance ToCStruct ImageCopy2KHR where
-  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageCopy2KHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset)
-    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource)
-    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset)
-    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (extent)
-    f
-  cStructSize = 88
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_COPY_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct ImageCopy2KHR where
-  peekCStruct p = do
-    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
-    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
-    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers))
-    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 60 :: Ptr Offset3D))
-    extent <- peekCStruct @Extent3D ((p `plusPtr` 72 :: Ptr Extent3D))
-    pure $ ImageCopy2KHR
-             srcSubresource srcOffset dstSubresource dstOffset extent
-
-instance Storable ImageCopy2KHR where
-  sizeOf ~_ = 88
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageCopy2KHR where
-  zero = ImageCopy2KHR
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageBlit2KHR - Structure specifying an image blit operation
---
--- = Description
---
--- For each element of the @pRegions@ array, a blit operation is performed
--- for the specified source and destination regions.
---
--- == Valid Usage
---
--- -   #VUID-VkImageBlit2KHR-aspectMask-00238# The @aspectMask@ member of
---     @srcSubresource@ and @dstSubresource@ /must/ match
---
--- -   #VUID-VkImageBlit2KHR-layerCount-00239# The @layerCount@ member of
---     @srcSubresource@ and @dstSubresource@ /must/ match
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageBlit2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_BLIT_2_KHR'
---
--- -   #VUID-VkImageBlit2KHR-pNext-pNext# @pNext@ /must/ be @NULL@ or a
---     pointer to a valid instance of
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---
--- -   #VUID-VkImageBlit2KHR-sType-unique# The @sType@ value of each struct
---     in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkImageBlit2KHR-srcSubresource-parameter# @srcSubresource@
---     /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- -   #VUID-VkImageBlit2KHR-dstSubresource-parameter# @dstSubresource@
---     /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'BlitImageInfo2KHR',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data ImageBlit2KHR (es :: [Type]) = ImageBlit2KHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @srcSubresource@ is the subresource to blit from.
-    srcSubresource :: ImageSubresourceLayers
-  , -- | @srcOffsets@ is a pointer to an array of two
-    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
-    -- bounds of the source region within @srcSubresource@.
-    srcOffsets :: (Offset3D, Offset3D)
-  , -- | @dstSubresource@ is the subresource to blit into.
-    dstSubresource :: ImageSubresourceLayers
-  , -- | @dstOffsets@ is a pointer to an array of two
-    -- 'Vulkan.Core10.FundamentalTypes.Offset3D' structures specifying the
-    -- bounds of the destination region within @dstSubresource@.
-    dstOffsets :: (Offset3D, Offset3D)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageBlit2KHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (ImageBlit2KHR es)
-
-instance Extensible ImageBlit2KHR where
-  extensibleTypeName = "ImageBlit2KHR"
-  setNext ImageBlit2KHR{..} next' = ImageBlit2KHR{next = next', ..}
-  getNext ImageBlit2KHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageBlit2KHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @CopyCommandTransformInfoQCOM = Just f
-    | otherwise = Nothing
-
-instance (Extendss ImageBlit2KHR es, PokeChain es) => ToCStruct (ImageBlit2KHR es) where
-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageBlit2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_BLIT_2_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)
-    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))
-    lift $ case (srcOffsets) of
-      (e0, e1) -> do
-        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
-        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (dstSubresource)
-    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))
-    lift $ case (dstOffsets) of
-      (e0, e1) -> do
-        poke (pDstOffsets' :: Ptr Offset3D) (e0)
-        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    lift $ f
-  cStructSize = 96
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_BLIT_2_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
-    let pSrcOffsets' = lowerArrayPtr ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))
-    lift $ case ((zero, zero)) of
-      (e0, e1) -> do
-        poke (pSrcOffsets' :: Ptr Offset3D) (e0)
-        poke (pSrcOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    lift $ poke ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers)) (zero)
-    let pDstOffsets' = lowerArrayPtr ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))
-    lift $ case ((zero, zero)) of
-      (e0, e1) -> do
-        poke (pDstOffsets' :: Ptr Offset3D) (e0)
-        poke (pDstOffsets' `plusPtr` 12 :: Ptr Offset3D) (e1)
-    lift $ f
-
-instance (Extendss ImageBlit2KHR es, PeekChain es) => FromCStruct (ImageBlit2KHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
-    let psrcOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 32 :: Ptr (FixedArray 2 Offset3D)))
-    srcOffsets0 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
-    srcOffsets1 <- peekCStruct @Offset3D ((psrcOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
-    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 56 :: Ptr ImageSubresourceLayers))
-    let pdstOffsets = lowerArrayPtr @Offset3D ((p `plusPtr` 72 :: Ptr (FixedArray 2 Offset3D)))
-    dstOffsets0 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 0 :: Ptr Offset3D))
-    dstOffsets1 <- peekCStruct @Offset3D ((pdstOffsets `advancePtrBytes` 12 :: Ptr Offset3D))
-    pure $ ImageBlit2KHR
-             next srcSubresource ((srcOffsets0, srcOffsets1)) dstSubresource ((dstOffsets0, dstOffsets1))
-
-instance es ~ '[] => Zero (ImageBlit2KHR es) where
-  zero = ImageBlit2KHR
-           ()
-           zero
-           (zero, zero)
-           zero
-           (zero, zero)
-
-
--- | VkBufferImageCopy2KHR - Structure specifying a buffer image copy
--- operation
---
--- = Description
---
--- This structure is functionally identical to
--- 'Vulkan.Core10.CommandBufferBuilding.BufferImageCopy', but adds @sType@
--- and @pNext@ parameters, allowing it to be more easily extended.
---
--- == Valid Usage
---
--- -   #VUID-VkBufferImageCopy2KHR-bufferRowLength-00195# @bufferRowLength@
---     /must/ be @0@, or greater than or equal to the @width@ member of
---     @imageExtent@
---
--- -   #VUID-VkBufferImageCopy2KHR-bufferImageHeight-00196#
---     @bufferImageHeight@ /must/ be @0@, or greater than or equal to the
---     @height@ member of @imageExtent@
---
--- -   #VUID-VkBufferImageCopy2KHR-aspectMask-00212# The @aspectMask@
---     member of @imageSubresource@ /must/ only have a single bit set
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBufferImageCopy2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR'
---
--- -   #VUID-VkBufferImageCopy2KHR-pNext-pNext# @pNext@ /must/ be @NULL@ or
---     a pointer to a valid instance of
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---
--- -   #VUID-VkBufferImageCopy2KHR-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkBufferImageCopy2KHR-imageSubresource-parameter#
---     @imageSubresource@ /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'CopyBufferToImageInfo2KHR', 'CopyImageToBufferInfo2KHR',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.FundamentalTypes.Extent3D',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data BufferImageCopy2KHR (es :: [Type]) = BufferImageCopy2KHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @bufferOffset@ is the offset in bytes from the start of the buffer
-    -- object where the image data is copied from or to.
-    bufferOffset :: DeviceSize
-  , -- | @bufferRowLength@ and @bufferImageHeight@ specify in texels a subregion
-    -- of a larger two- or three-dimensional image in buffer memory, and
-    -- control the addressing calculations. If either of these values is zero,
-    -- that aspect of the buffer memory is considered to be tightly packed
-    -- according to the @imageExtent@.
-    bufferRowLength :: Word32
-  , -- No documentation found for Nested "VkBufferImageCopy2KHR" "bufferImageHeight"
-    bufferImageHeight :: Word32
-  , -- | @imageSubresource@ is a
-    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' used to
-    -- specify the specific image subresources of the image used for the source
-    -- or destination image data.
-    imageSubresource :: ImageSubresourceLayers
-  , -- | @imageOffset@ selects the initial @x@, @y@, @z@ offsets in texels of the
-    -- sub-region of the source or destination image data.
-    imageOffset :: Offset3D
-  , -- | @imageExtent@ is the size in texels of the image to copy in @width@,
-    -- @height@ and @depth@.
-    imageExtent :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferImageCopy2KHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (BufferImageCopy2KHR es)
-
-instance Extensible BufferImageCopy2KHR where
-  extensibleTypeName = "BufferImageCopy2KHR"
-  setNext BufferImageCopy2KHR{..} next' = BufferImageCopy2KHR{next = next', ..}
-  getNext BufferImageCopy2KHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends BufferImageCopy2KHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @CopyCommandTransformInfoQCOM = Just f
-    | otherwise = Nothing
-
-instance (Extendss BufferImageCopy2KHR es, PokeChain es) => ToCStruct (BufferImageCopy2KHR es) where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferImageCopy2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (bufferOffset)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (bufferRowLength)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (bufferImageHeight)
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (imageSubresource)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Offset3D)) (imageOffset)
-    lift $ poke ((p `plusPtr` 60 :: Ptr Extent3D)) (imageExtent)
-    lift $ f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 28 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers)) (zero)
-    lift $ poke ((p `plusPtr` 48 :: Ptr Offset3D)) (zero)
-    lift $ poke ((p `plusPtr` 60 :: Ptr Extent3D)) (zero)
-    lift $ f
-
-instance (Extendss BufferImageCopy2KHR es, PeekChain es) => FromCStruct (BufferImageCopy2KHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    bufferOffset <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    bufferRowLength <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    bufferImageHeight <- peek @Word32 ((p `plusPtr` 28 :: Ptr Word32))
-    imageSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 32 :: Ptr ImageSubresourceLayers))
-    imageOffset <- peekCStruct @Offset3D ((p `plusPtr` 48 :: Ptr Offset3D))
-    imageExtent <- peekCStruct @Extent3D ((p `plusPtr` 60 :: Ptr Extent3D))
-    pure $ BufferImageCopy2KHR
-             next bufferOffset bufferRowLength bufferImageHeight imageSubresource imageOffset imageExtent
-
-instance es ~ '[] => Zero (BufferImageCopy2KHR es) where
-  zero = BufferImageCopy2KHR
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageResolve2KHR - Structure specifying an image resolve operation
---
--- == Valid Usage
---
--- -   #VUID-VkImageResolve2KHR-aspectMask-00266# The @aspectMask@ member
---     of @srcSubresource@ and @dstSubresource@ /must/ only contain
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageResolve2KHR-layerCount-00267# The @layerCount@ member
---     of @srcSubresource@ and @dstSubresource@ /must/ match
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageResolve2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR'
---
--- -   #VUID-VkImageResolve2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkImageResolve2KHR-srcSubresource-parameter# @srcSubresource@
---     /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- -   #VUID-VkImageResolve2KHR-dstSubresource-parameter# @dstSubresource@
---     /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers'
---     structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.FundamentalTypes.Extent3D',
--- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers',
--- 'Vulkan.Core10.FundamentalTypes.Offset3D', 'ResolveImageInfo2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data ImageResolve2KHR = ImageResolve2KHR
-  { -- | @srcSubresource@ and @dstSubresource@ are
-    -- 'Vulkan.Core10.CommandBufferBuilding.ImageSubresourceLayers' structures
-    -- specifying the image subresources of the images used for the source and
-    -- destination image data, respectively. Resolve of depth\/stencil images
-    -- is not supported.
-    srcSubresource :: ImageSubresourceLayers
-  , -- | @srcOffset@ and @dstOffset@ select the initial @x@, @y@, and @z@ offsets
-    -- in texels of the sub-regions of the source and destination image data.
-    srcOffset :: Offset3D
-  , -- No documentation found for Nested "VkImageResolve2KHR" "dstSubresource"
-    dstSubresource :: ImageSubresourceLayers
-  , -- No documentation found for Nested "VkImageResolve2KHR" "dstOffset"
-    dstOffset :: Offset3D
-  , -- | @extent@ is the size in texels of the source image to resolve in
-    -- @width@, @height@ and @depth@.
-    extent :: Extent3D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageResolve2KHR)
-#endif
-deriving instance Show ImageResolve2KHR
-
-instance ToCStruct ImageResolve2KHR where
-  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageResolve2KHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (srcSubresource)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (srcOffset)
-    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (dstSubresource)
-    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (dstOffset)
-    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (extent)
-    f
-  cStructSize = 88
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers)) (zero)
-    poke ((p `plusPtr` 60 :: Ptr Offset3D)) (zero)
-    poke ((p `plusPtr` 72 :: Ptr Extent3D)) (zero)
-    f
-
-instance FromCStruct ImageResolve2KHR where
-  peekCStruct p = do
-    srcSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 16 :: Ptr ImageSubresourceLayers))
-    srcOffset <- peekCStruct @Offset3D ((p `plusPtr` 32 :: Ptr Offset3D))
-    dstSubresource <- peekCStruct @ImageSubresourceLayers ((p `plusPtr` 44 :: Ptr ImageSubresourceLayers))
-    dstOffset <- peekCStruct @Offset3D ((p `plusPtr` 60 :: Ptr Offset3D))
-    extent <- peekCStruct @Extent3D ((p `plusPtr` 72 :: Ptr Extent3D))
-    pure $ ImageResolve2KHR
-             srcSubresource srcOffset dstSubresource dstOffset extent
-
-instance Storable ImageResolve2KHR where
-  sizeOf ~_ = 88
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero ImageResolve2KHR where
-  zero = ImageResolve2KHR
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkCopyBufferInfo2KHR - Structure specifying parameters of a buffer copy
--- command
---
--- = Description
---
--- Members defined by this structure with the same name as parameters in
--- 'Vulkan.Core10.CommandBufferBuilding.cmdCopyBuffer' have the identical
--- effect to those parameters; the child structure 'BufferCopy2KHR' is a
--- variant of 'Vulkan.Core10.CommandBufferBuilding.BufferCopy' which
--- includes @sType@ and @pNext@ parameters, allowing it to be extended.
---
--- == Valid Usage
---
--- -   #VUID-VkCopyBufferInfo2KHR-srcOffset-00113# The @srcOffset@ member
---     of each element of @pRegions@ /must/ be less than the size of
---     @srcBuffer@
---
--- -   #VUID-VkCopyBufferInfo2KHR-dstOffset-00114# The @dstOffset@ member
---     of each element of @pRegions@ /must/ be less than the size of
---     @dstBuffer@
---
--- -   #VUID-VkCopyBufferInfo2KHR-size-00115# The @size@ member of each
---     element of @pRegions@ /must/ be less than or equal to the size of
---     @srcBuffer@ minus @srcOffset@
---
--- -   #VUID-VkCopyBufferInfo2KHR-size-00116# The @size@ member of each
---     element of @pRegions@ /must/ be less than or equal to the size of
---     @dstBuffer@ minus @dstOffset@
---
--- -   #VUID-VkCopyBufferInfo2KHR-pRegions-00117# The union of the source
---     regions, and the union of the destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-VkCopyBufferInfo2KHR-srcBuffer-00118# @srcBuffer@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-VkCopyBufferInfo2KHR-srcBuffer-00119# If @srcBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyBufferInfo2KHR-dstBuffer-00120# @dstBuffer@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-VkCopyBufferInfo2KHR-dstBuffer-00121# If @dstBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyBufferInfo2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR'
---
--- -   #VUID-VkCopyBufferInfo2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkCopyBufferInfo2KHR-srcBuffer-parameter# @srcBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkCopyBufferInfo2KHR-dstBuffer-parameter# @dstBuffer@ /must/
---     be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkCopyBufferInfo2KHR-pRegions-parameter# @pRegions@ /must/ be
---     a valid pointer to an array of @regionCount@ valid 'BufferCopy2KHR'
---     structures
---
--- -   #VUID-VkCopyBufferInfo2KHR-regionCount-arraylength# @regionCount@
---     /must/ be greater than @0@
---
--- -   #VUID-VkCopyBufferInfo2KHR-commonparent# Both of @dstBuffer@, and
---     @srcBuffer@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.Buffer', 'BufferCopy2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdCopyBuffer2KHR'
-data CopyBufferInfo2KHR = CopyBufferInfo2KHR
-  { -- | @srcBuffer@ is the source buffer.
-    srcBuffer :: Buffer
-  , -- | @dstBuffer@ is the destination buffer.
-    dstBuffer :: Buffer
-  , -- | @pRegions@ is a pointer to an array of 'BufferCopy2KHR' structures
-    -- specifying the regions to copy.
-    regions :: Vector BufferCopy2KHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyBufferInfo2KHR)
-#endif
-deriving instance Show CopyBufferInfo2KHR
-
-instance ToCStruct CopyBufferInfo2KHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyBufferInfo2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Buffer)) (srcBuffer)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Buffer)) (dstBuffer)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
-    pPRegions' <- ContT $ allocaBytes @BufferCopy2KHR ((Data.Vector.length (regions)) * 40)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (40 * (i)) :: Ptr BufferCopy2KHR) (e)) (regions)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr BufferCopy2KHR))) (pPRegions')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Buffer)) (zero)
-    f
-
-instance FromCStruct CopyBufferInfo2KHR where
-  peekCStruct p = do
-    srcBuffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
-    dstBuffer <- peek @Buffer ((p `plusPtr` 24 :: Ptr Buffer))
-    regionCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pRegions <- peek @(Ptr BufferCopy2KHR) ((p `plusPtr` 40 :: Ptr (Ptr BufferCopy2KHR)))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @BufferCopy2KHR ((pRegions `advancePtrBytes` (40 * (i)) :: Ptr BufferCopy2KHR)))
-    pure $ CopyBufferInfo2KHR
-             srcBuffer dstBuffer pRegions'
-
-instance Zero CopyBufferInfo2KHR where
-  zero = CopyBufferInfo2KHR
-           zero
-           zero
-           mempty
-
-
--- | VkCopyImageInfo2KHR - Structure specifying parameters of an image copy
--- command
---
--- == Valid Usage
---
--- -   #VUID-VkCopyImageInfo2KHR-pRegions-00124# The union of all source
---     regions, and the union of all destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01995# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-00126# @srcImage@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01546# If @srcImage@ is
---     non-sparse then the image or /disjoint/ plane to be copied /must/ be
---     bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImageLayout-00128# @srcImageLayout@
---     /must/ specify the layout of the image subresources of @srcImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImageLayout-01917# @srcImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01996# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-00131# @dstImage@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01547# If @dstImage@ is
---     non-sparse then the image or /disjoint/ plane that is the
---     destination of the copy /must/ be bound completely and contiguously
---     to a single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImageLayout-00133# @dstImageLayout@
---     /must/ specify the layout of the image subresources of @dstImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImageLayout-01395# @dstImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01548# If the
---     'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
---     @dstImage@ is not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     the 'Vulkan.Core10.Enums.Format.Format' of each of @srcImage@ and
---     @dstImage@ /must/ be compatible, as defined
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-images-format-compatibility above>
---
--- -   #VUID-VkCopyImageInfo2KHR-None-01549# In a copy to or from a plane
---     of a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image>,
---     the 'Vulkan.Core10.Enums.Format.Format' of the image and plane
---     /must/ be compatible according to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes the description of compatible planes>
---     for the plane being copied
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-00136# The sample count of
---     @srcImage@ and @dstImage@ /must/ match
---
--- -   #VUID-VkCopyImageInfo2KHR-srcSubresource-01696# The
---     @srcSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-VkCopyImageInfo2KHR-dstSubresource-01697# The
---     @dstSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-VkCopyImageInfo2KHR-srcSubresource-01698# The
---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-VkCopyImageInfo2KHR-dstSubresource-01699# The
---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-VkCopyImageInfo2KHR-srcOffset-01783# The @srcOffset@ and
---     @extent@ members of each element of @pRegions@ /must/ respect the
---     image transfer granularity requirements of @commandBuffer@’s command
---     pool’s queue family, as described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstOffset-01784# The @dstOffset@ and
---     @extent@ members of each element of @pRegions@ /must/ respect the
---     image transfer granularity requirements of @commandBuffer@’s command
---     pool’s queue family, as described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-02542# @dstImage@ and @srcImage@
---     /must/ not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01551# If neither @srcImage@ nor
---     @dstImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
---     then for each element of @pRegions@, @srcSubresource.aspectMask@ and
---     @dstSubresource.aspectMask@ /must/ match
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01552# If @srcImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
---     then for each element of @pRegions@, @srcSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01553# If @srcImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
---     then for each element of @pRegions@, @srcSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01554# If @dstImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion two planes>
---     then for each element of @pRegions@, @dstSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01555# If @dstImage@ has a
---     'Vulkan.Core10.Enums.Format.Format' with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion three planes>
---     then for each element of @pRegions@, @dstSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01556# If @srcImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
---     and the @dstImage@ does not have a multi-planar image format, then
---     for each element of @pRegions@, @dstSubresource.aspectMask@ /must/
---     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01557# If @dstImage@ has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar image format>
---     and the @srcImage@ does not have a multi-planar image format, then
---     for each element of @pRegions@, @srcSubresource.aspectMask@ /must/
---     be 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-04443# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
---     @srcSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-04444# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
---     @dstSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkCopyImageInfo2KHR-aspectMask-00142# For each element of
---     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
---     present in @srcImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-aspectMask-00143# For each element of
---     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
---     present in @dstImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcOffset-00144# For each element of
---     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcOffset-00145# For each element of
---     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-00146# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffset.y@ /must/ be @0@ and @extent.height@
---     /must/ be @1@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcOffset-00147# For each element of
---     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01785# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01786# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01787# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffset.z@ /must/ be @0@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01788# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffset.z@ /must/ be @0@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01790# If @srcImage@ and
---     @dstImage@ are both of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @extent.depth@ /must/ be @1@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01791# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @dstImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
---     element of @pRegions@, @extent.depth@ /must/ equal
---     @srcSubresource.layerCount@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01792# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', and @srcImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each
---     element of @pRegions@, @extent.depth@ /must/ equal
---     @dstSubresource.layerCount@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstOffset-00150# For each element of
---     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstOffset-00151# For each element of
---     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-00152# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffset.y@ /must/ be @0@ and @extent.height@
---     /must/ be @1@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstOffset-00153# For each element of
---     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01727# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, all members of @srcOffset@
---     /must/ be a multiple of the corresponding dimensions of the
---     compressed texel block
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01728# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.width@ /must/ be a
---     multiple of the compressed texel block width or (@extent.width@ +
---     @srcOffset.x@) /must/ equal the width of the specified
---     @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01729# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.height@ /must/ be a
---     multiple of the compressed texel block height or (@extent.height@ +
---     @srcOffset.y@) /must/ equal the height of the specified
---     @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-01730# If @srcImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@extent.depth@ +
---     @srcOffset.z@) /must/ equal the depth of the specified
---     @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01731# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, all members of @dstOffset@
---     /must/ be a multiple of the corresponding dimensions of the
---     compressed texel block
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01732# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.width@ /must/ be a
---     multiple of the compressed texel block width or (@extent.width@ +
---     @dstOffset.x@) /must/ equal the width of the specified
---     @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01733# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.height@ /must/ be a
---     multiple of the compressed texel block height or (@extent.height@ +
---     @dstOffset.y@) /must/ equal the height of the specified
---     @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-01734# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     then for each element of @pRegions@, @extent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@extent.depth@ +
---     @dstOffset.z@) /must/ equal the depth of the specified
---     @dstSubresource@ of @dstImage@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyImageInfo2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR'
---
--- -   #VUID-VkCopyImageInfo2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImage-parameter# @srcImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyImageInfo2KHR-srcImageLayout-parameter# @srcImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImage-parameter# @dstImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyImageInfo2KHR-dstImageLayout-parameter# @dstImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-VkCopyImageInfo2KHR-pRegions-parameter# @pRegions@ /must/ be a
---     valid pointer to an array of @regionCount@ valid 'ImageCopy2KHR'
---     structures
---
--- -   #VUID-VkCopyImageInfo2KHR-regionCount-arraylength# @regionCount@
---     /must/ be greater than @0@
---
--- -   #VUID-VkCopyImageInfo2KHR-commonparent# Both of @dstImage@, and
---     @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.Image', 'ImageCopy2KHR',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdCopyImage2KHR'
-data CopyImageInfo2KHR = CopyImageInfo2KHR
-  { -- | @srcImage@ is the source image.
-    srcImage :: Image
-  , -- | @srcImageLayout@ is the current layout of the source image subresource.
-    srcImageLayout :: ImageLayout
-  , -- | @dstImage@ is the destination image.
-    dstImage :: Image
-  , -- | @dstImageLayout@ is the current layout of the destination image
-    -- subresource.
-    dstImageLayout :: ImageLayout
-  , -- | @pRegions@ is a pointer to an array of 'ImageCopy2KHR' structures
-    -- specifying the regions to copy.
-    regions :: Vector ImageCopy2KHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyImageInfo2KHR)
-#endif
-deriving instance Show CopyImageInfo2KHR
-
-instance ToCStruct CopyImageInfo2KHR where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyImageInfo2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (dstImage)
-    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
-    pPRegions' <- ContT $ allocaBytes @ImageCopy2KHR ((Data.Vector.length (regions)) * 88)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageCopy2KHR) (e)) (regions)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageCopy2KHR))) (pPRegions')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
-    f
-
-instance FromCStruct CopyImageInfo2KHR where
-  peekCStruct p = do
-    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
-    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    dstImage <- peek @Image ((p `plusPtr` 32 :: Ptr Image))
-    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 40 :: Ptr ImageLayout))
-    regionCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    pRegions <- peek @(Ptr ImageCopy2KHR) ((p `plusPtr` 48 :: Ptr (Ptr ImageCopy2KHR)))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageCopy2KHR ((pRegions `advancePtrBytes` (88 * (i)) :: Ptr ImageCopy2KHR)))
-    pure $ CopyImageInfo2KHR
-             srcImage srcImageLayout dstImage dstImageLayout pRegions'
-
-instance Zero CopyImageInfo2KHR where
-  zero = CopyImageInfo2KHR
-           zero
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkBlitImageInfo2KHR - Structure specifying parameters of blit image
--- command
---
--- == Valid Usage
---
--- -   #VUID-VkBlitImageInfo2KHR-pRegions-00215# The source region
---     specified by each element of @pRegions@ /must/ be a region that is
---     contained within @srcImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-pRegions-00216# The destination region
---     specified by each element of @pRegions@ /must/ be a region that is
---     contained within @dstImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-pRegions-00217# The union of all
---     destination regions, specified by the elements of @pRegions@, /must/
---     not overlap in memory with any texel that /may/ be sampled during
---     the blit operation
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-01999# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_SRC_BIT'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-06421# @srcImage@ /must/ not use
---     a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00219# @srcImage@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00220# If @srcImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImageLayout-00221# @srcImageLayout@
---     /must/ specify the layout of the image subresources of @srcImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImageLayout-01398# @srcImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-02000# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_BLIT_DST_BIT'
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-06422# @dstImage@ /must/ not use
---     a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion format that requires a sampler Y’CBCR conversion>
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-00224# @dstImage@ /must/ have
---     been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-00225# If @dstImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImageLayout-00226# @dstImageLayout@
---     /must/ specify the layout of the image subresources of @dstImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImageLayout-01399# @dstImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00229# If either of @srcImage@ or
---     @dstImage@ was created with a signed integer
---     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
---     created with a signed integer 'Vulkan.Core10.Enums.Format.Format'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00230# If either of @srcImage@ or
---     @dstImage@ was created with an unsigned integer
---     'Vulkan.Core10.Enums.Format.Format', the other /must/ also have been
---     created with an unsigned integer 'Vulkan.Core10.Enums.Format.Format'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00231# If either of @srcImage@ or
---     @dstImage@ was created with a depth\/stencil format, the other
---     /must/ have exactly the same format
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00232# If @srcImage@ was created
---     with a depth\/stencil format, @filter@ /must/ be
---     'Vulkan.Core10.Enums.Filter.FILTER_NEAREST'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00233# @srcImage@ /must/ have
---     been created with a @samples@ value of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-00234# @dstImage@ /must/ have
---     been created with a @samples@ value of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkBlitImageInfo2KHR-filter-02001# If @filter@ is
---     'Vulkan.Core10.Enums.Filter.FILTER_LINEAR', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT'
---
--- -   #VUID-VkBlitImageInfo2KHR-filter-02002# If @filter@ is
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', then the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT'
---
--- -   #VUID-VkBlitImageInfo2KHR-filter-00237# If @filter@ is
---     'Vulkan.Extensions.VK_EXT_filter_cubic.FILTER_CUBIC_EXT', @srcImage@
---     /must/ be of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcSubresource-01705# The
---     @srcSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-VkBlitImageInfo2KHR-dstSubresource-01706# The
---     @dstSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-VkBlitImageInfo2KHR-srcSubresource-01707# The
---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-VkBlitImageInfo2KHR-dstSubresource-01708# The
---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-02545# @dstImage@ and @srcImage@
---     /must/ not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00240# If either @srcImage@ or
---     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
---     then for each element of @pRegions@, @srcSubresource.baseArrayLayer@
---     and @dstSubresource.baseArrayLayer@ /must/ each be @0@, and
---     @srcSubresource.layerCount@ and @dstSubresource.layerCount@ /must/
---     each be @1@
---
--- -   #VUID-VkBlitImageInfo2KHR-aspectMask-00241# For each element of
---     @pRegions@, @srcSubresource.aspectMask@ /must/ specify aspects
---     present in @srcImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-aspectMask-00242# For each element of
---     @pRegions@, @dstSubresource.aspectMask@ /must/ specify aspects
---     present in @dstImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00243# For each element of
---     @pRegions@, @srcOffsets@[0].x and @srcOffsets@[1].x /must/ both be
---     greater than or equal to @0@ and less than or equal to the width of
---     the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00244# For each element of
---     @pRegions@, @srcOffsets@[0].y and @srcOffsets@[1].y /must/ both be
---     greater than or equal to @0@ and less than or equal to the height of
---     the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00245# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @srcOffsets@[0].y /must/ be @0@ and @srcOffsets@[1].y
---     /must/ be @1@
---
--- -   #VUID-VkBlitImageInfo2KHR-srcOffset-00246# For each element of
---     @pRegions@, @srcOffsets@[0].z and @srcOffsets@[1].z /must/ both be
---     greater than or equal to @0@ and less than or equal to the depth of
---     the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-00247# If @srcImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffsets@[0].z /must/ be @0@ and @srcOffsets@[1].z
---     /must/ be @1@
---
--- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00248# For each element of
---     @pRegions@, @dstOffsets@[0].x and @dstOffsets@[1].x /must/ both be
---     greater than or equal to @0@ and less than or equal to the width of
---     the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00249# For each element of
---     @pRegions@, @dstOffsets@[0].y and @dstOffsets@[1].y /must/ both be
---     greater than or equal to @0@ and less than or equal to the height of
---     the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-00250# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each element
---     of @pRegions@, @dstOffsets@[0].y /must/ be @0@ and @dstOffsets@[1].y
---     /must/ be @1@
---
--- -   #VUID-VkBlitImageInfo2KHR-dstOffset-00251# For each element of
---     @pRegions@, @dstOffsets@[0].z and @dstOffsets@[1].z /must/ both be
---     greater than or equal to @0@ and less than or equal to the depth of
---     the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-00252# If @dstImage@ is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffsets@[0].z /must/ be @0@ and @dstOffsets@[1].z
---     /must/ be @1@
---
--- -   #VUID-VkBlitImageInfo2KHR-pRegions-04561# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @srcImage@ and @dstImage@ /must/ not be
---     block-compressed images
---
--- -   #VUID-VkBlitImageInfo2KHR-pRegions-06207# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @srcImage@ /must/ be of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
---
--- -   #VUID-VkBlitImageInfo2KHR-pRegions-06208# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @srcImage@ /must/ not have a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBlitImageInfo2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR'
---
--- -   #VUID-VkBlitImageInfo2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImage-parameter# @srcImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkBlitImageInfo2KHR-srcImageLayout-parameter# @srcImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImage-parameter# @dstImage@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkBlitImageInfo2KHR-dstImageLayout-parameter# @dstImageLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-VkBlitImageInfo2KHR-pRegions-parameter# @pRegions@ /must/ be a
---     valid pointer to an array of @regionCount@ valid 'ImageBlit2KHR'
---     structures
---
--- -   #VUID-VkBlitImageInfo2KHR-filter-parameter# @filter@ /must/ be a
---     valid 'Vulkan.Core10.Enums.Filter.Filter' value
---
--- -   #VUID-VkBlitImageInfo2KHR-regionCount-arraylength# @regionCount@
---     /must/ be greater than @0@
---
--- -   #VUID-VkBlitImageInfo2KHR-commonparent# Both of @dstImage@, and
---     @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Enums.Filter.Filter', 'Vulkan.Core10.Handles.Image',
--- 'ImageBlit2KHR', 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdBlitImage2KHR'
-data BlitImageInfo2KHR = BlitImageInfo2KHR
-  { -- | @srcImage@ is the source image.
-    srcImage :: Image
-  , -- | @srcImageLayout@ is the layout of the source image subresources for the
-    -- blit.
-    srcImageLayout :: ImageLayout
-  , -- | @dstImage@ is the destination image.
-    dstImage :: Image
-  , -- | @dstImageLayout@ is the layout of the destination image subresources for
-    -- the blit.
-    dstImageLayout :: ImageLayout
-  , -- | @pRegions@ is a pointer to an array of 'ImageBlit2KHR' structures
-    -- specifying the regions to blit.
-    regions :: Vector (SomeStruct ImageBlit2KHR)
-  , -- | @filter@ is a 'Vulkan.Core10.Enums.Filter.Filter' specifying the filter
-    -- to apply if the blits require scaling.
-    filter' :: Filter
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BlitImageInfo2KHR)
-#endif
-deriving instance Show BlitImageInfo2KHR
-
-instance ToCStruct BlitImageInfo2KHR where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BlitImageInfo2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (dstImage)
-    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
-    pPRegions' <- ContT $ allocaBytes @(ImageBlit2KHR _) ((Data.Vector.length (regions)) * 96)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPRegions' `plusPtr` (96 * (i)) :: Ptr (ImageBlit2KHR _))) (e) . ($ ())) (regions)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (ImageBlit2KHR _)))) (pPRegions')
-    lift $ poke ((p `plusPtr` 56 :: Ptr Filter)) (filter')
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Filter)) (zero)
-    f
-
-instance FromCStruct BlitImageInfo2KHR where
-  peekCStruct p = do
-    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
-    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    dstImage <- peek @Image ((p `plusPtr` 32 :: Ptr Image))
-    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 40 :: Ptr ImageLayout))
-    regionCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    pRegions <- peek @(Ptr (ImageBlit2KHR _)) ((p `plusPtr` 48 :: Ptr (Ptr (ImageBlit2KHR _))))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekSomeCStruct (forgetExtensions ((pRegions `advancePtrBytes` (96 * (i)) :: Ptr (ImageBlit2KHR _)))))
-    filter' <- peek @Filter ((p `plusPtr` 56 :: Ptr Filter))
-    pure $ BlitImageInfo2KHR
-             srcImage srcImageLayout dstImage dstImageLayout pRegions' filter'
-
-instance Zero BlitImageInfo2KHR where
-  zero = BlitImageInfo2KHR
-           zero
-           zero
-           zero
-           zero
-           mempty
-           zero
-
-
--- | VkCopyBufferToImageInfo2KHR - Structure specifying parameters of a
--- buffer to image copy command
---
--- == Valid Usage
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-04565# If the image
---     region specified by each element of @pRegions@ does not contain
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, it /must/ be a region that is contained within
---     the specified @imageSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-04554# If the image
---     region specified by each element of @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, the rotated destination region as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing>
---     /must/ be contained within @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @dstImage@ /must/ not be a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-06203# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @dstImage@ /must/ be of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-06204# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @dstImage@ /must/ not have a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-00171# @srcBuffer@ /must/
---     be large enough to contain all buffer locations that are accessed
---     according to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
---     for each element of @pRegions@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-00173# The union of all
---     source regions, and the union of all destination regions, specified
---     by the elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00174# @srcBuffer@
---     /must/ have been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImage-01997# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_DST_BIT'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00176# If @srcBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImage-00177# @dstImage@ /must/
---     have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImage-00178# If @dstImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImage-00179# @dstImage@ /must/
---     have a sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-00180#
---     @dstImageLayout@ /must/ specify the layout of the image subresources
---     of @dstImage@ specified in @pRegions@ at the time this command is
---     executed on a 'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-01396#
---     @dstImageLayout@ /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01701# The
---     @imageSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01702# The
---     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageOffset-01793# The
---     @imageOffset@ and @imageExtent@ members of each element of
---     @pRegions@ /must/ respect the image transfer granularity
---     requirements of @commandBuffer@’s command pool’s queue family, as
---     described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImage-02543# @dstImage@ /must/
---     not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04477# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT', for each
---     element of @pRegions@, the @aspectMask@ member of @imageSubresource@
---     /must/ not be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-06223# For each element
---     of @pRegions@ not containing
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, @imageOffset.x@ and (@imageExtent.width@ +
---     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the width of the specified @imageSubresource@
---     of @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-06224# For each element
---     of @pRegions@ not containing
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, @imageOffset.y@ and (@imageExtent.height@ +
---     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the height of the specified @imageSubresource@
---     of @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01558# If @dstImage@
---     does not have either a depth\/stencil or a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the format’s texel block size
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01559# If @dstImage@
---     has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the element size of the compatible format for the format
---     and the @aspectMask@ of the @imageSubresource@ as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-srcImage-00199# If @dstImage@ is
---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
---     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
---     @imageExtent.height@ /must/ be @1@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00200# For each
---     element of @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
---     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the depth of the specified @imageSubresource@
---     of @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-srcImage-00201# If @dstImage@ is
---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
---     /must/ be @1@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-bufferRowLength-00203# If
---     @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ /must/ be a
---     multiple of the compressed texel block width
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-bufferImageHeight-00204# If
---     @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
---     multiple of the compressed texel block height
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00205# If @dstImage@
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, all members of @imageOffset@ /must/
---     be a multiple of the corresponding dimensions of the compressed
---     texel block
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-00206# If @dstImage@
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
---     of the compressed texel block size in bytes
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00207# If @dstImage@
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.width@ /must/ be a
---     multiple of the compressed texel block width or (@imageExtent.width@
---     + @imageOffset.x@) /must/ equal the width of the specified
---     @imageSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00208# If @dstImage@
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.height@ /must/ be a
---     multiple of the compressed texel block height or
---     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
---     the specified @imageSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00209# If @dstImage@
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@imageExtent.depth@
---     + @imageOffset.z@) /must/ equal the depth of the specified
---     @imageSubresource@ of @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-aspectMask-00211# For each element
---     of @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
---     present in @dstImage@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-aspectMask-01560# If @dstImage@
---     has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @imageSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     (with
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     valid only for image formats with three planes)
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-baseArrayLayer-00213# If
---     @dstImage@ is of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D',
---     for each element of @pRegions@, @imageSubresource.baseArrayLayer@
---     /must/ be @0@ and @imageSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-04725# If @dstImage@ is
---     not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ multiplied by the
---     texel block size of @dstImage@ /must/ be less than or equal to 231-1
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-04726# If @dstImage@ is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ divided by the
---     compressed texel block width and then multiplied by the texel block
---     size of @dstImage@ /must/ be less than or equal to 231-1
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04052# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
---     @bufferOffset@ member of any element of @pRegions@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-srcImage-04053# If @dstImage@ has
---     a depth\/stencil format, the @bufferOffset@ member of any element of
---     @pRegions@ /must/ be a multiple of @4@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR'
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-parameter# @srcBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImage-parameter# @dstImage@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-parameter#
---     @dstImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-pRegions-parameter# @pRegions@
---     /must/ be a valid pointer to an array of @regionCount@ valid
---     'BufferImageCopy2KHR' structures
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-regionCount-arraylength#
---     @regionCount@ /must/ be greater than @0@
---
--- -   #VUID-VkCopyBufferToImageInfo2KHR-commonparent# Both of @dstImage@,
---     and @srcBuffer@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy2KHR',
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyBufferToImage2KHR'
-data CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2KHR
-  { -- | @srcBuffer@ is the source buffer.
-    srcBuffer :: Buffer
-  , -- | @dstImage@ is the destination image.
-    dstImage :: Image
-  , -- | @dstImageLayout@ is the layout of the destination image subresources for
-    -- the copy.
-    dstImageLayout :: ImageLayout
-  , -- | @pRegions@ is a pointer to an array of 'BufferImageCopy2KHR' structures
-    -- specifying the regions to copy.
-    regions :: Vector (SomeStruct BufferImageCopy2KHR)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyBufferToImageInfo2KHR)
-#endif
-deriving instance Show CopyBufferToImageInfo2KHR
-
-instance ToCStruct CopyBufferToImageInfo2KHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyBufferToImageInfo2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Buffer)) (srcBuffer)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Image)) (dstImage)
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (dstImageLayout)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
-    pPRegions' <- ContT $ allocaBytes @(BufferImageCopy2KHR _) ((Data.Vector.length (regions)) * 72)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPRegions' `plusPtr` (72 * (i)) :: Ptr (BufferImageCopy2KHR _))) (e) . ($ ())) (regions)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr (BufferImageCopy2KHR _)))) (pPRegions')
-    lift $ f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Buffer)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr ImageLayout)) (zero)
-    f
-
-instance FromCStruct CopyBufferToImageInfo2KHR where
-  peekCStruct p = do
-    srcBuffer <- peek @Buffer ((p `plusPtr` 16 :: Ptr Buffer))
-    dstImage <- peek @Image ((p `plusPtr` 24 :: Ptr Image))
-    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 32 :: Ptr ImageLayout))
-    regionCount <- peek @Word32 ((p `plusPtr` 36 :: Ptr Word32))
-    pRegions <- peek @(Ptr (BufferImageCopy2KHR _)) ((p `plusPtr` 40 :: Ptr (Ptr (BufferImageCopy2KHR _))))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekSomeCStruct (forgetExtensions ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr (BufferImageCopy2KHR _)))))
-    pure $ CopyBufferToImageInfo2KHR
-             srcBuffer dstImage dstImageLayout pRegions'
-
-instance Zero CopyBufferToImageInfo2KHR where
-  zero = CopyBufferToImageInfo2KHR
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkCopyImageToBufferInfo2KHR - Structure specifying parameters of an
--- image to buffer copy command
---
--- == Valid Usage
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-04566# If the image
---     region specified by each element of @pRegions@ does not contain
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, it /must/ be contained within the specified
---     @imageSubresource@ of @srcImage@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557# If the image
---     region specified by each element of @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, the rotated source region as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-rotation-addressing>
---     /must/ be contained within @srcImage@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @srcImage@ /must/ not be a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-06205# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @srcImage@ /must/ be of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-06206# If any element of
---     @pRegions@ contains
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, then @srcImage@ /must/ not have a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-00183# @dstBuffer@ /must/
---     be large enough to contain all buffer locations that are accessed
---     according to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies-buffers-images-addressing Buffer and Image Addressing>,
---     for each element of @pRegions@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-00184# The union of all
---     source regions, and the union of all destination regions, specified
---     by the elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-00186# @srcImage@ /must/
---     have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---     usage flag
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-01998# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @srcImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_TRANSFER_SRC_BIT'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-00187# If @srcImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00191# @dstBuffer@
---     /must/ have been created with
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00192# If @dstBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-00188# @srcImage@ /must/
---     have a sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00189#
---     @srcImageLayout@ /must/ specify the layout of the image subresources
---     of @srcImage@ specified in @pRegions@ at the time this command is
---     executed on a 'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-01397#
---     @srcImageLayout@ /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01703# The
---     @imageSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01704# The
---     @imageSubresource.baseArrayLayer@ + @imageSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageOffset-01794# The
---     @imageOffset@ and @imageExtent@ members of each element of
---     @pRegions@ /must/ respect the image transfer granularity
---     requirements of @commandBuffer@’s command pool’s queue family, as
---     described in
---     'Vulkan.Core10.DeviceInitialization.QueueFamilyProperties'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-02544# @srcImage@ /must/
---     not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197# For each
---     element of @pRegions@ not containing
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, @imageOffset.x@ and (@imageExtent.width@ +
---     @imageOffset.x@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the width of the specified @imageSubresource@
---     of @srcImage@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198# For each
---     element of @pRegions@ not containing
---     'Vulkan.Extensions.VK_QCOM_rotated_copy_commands.CopyCommandTransformInfoQCOM'
---     in its @pNext@ chain, @imageOffset.y@ and (@imageExtent.height@ +
---     @imageOffset.y@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the height of the specified @imageSubresource@
---     of @srcImage@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01558# If
---     {imageparam} does not have either a depth\/stencil or a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the format’s texel block size
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01559# If
---     {imageparam} has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @bufferOffset@ /must/ be a
---     multiple of the element size of the compatible format for the format
---     and the @aspectMask@ of the @imageSubresource@ as defined in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatible-planes ???>
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-00199# If {imageparam} is
---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
---     element of @pRegions@, @imageOffset.y@ /must/ be @0@ and
---     @imageExtent.height@ /must/ be @1@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00200# For each
---     element of @pRegions@, @imageOffset.z@ and (@imageExtent.depth@ +
---     @imageOffset.z@) /must/ both be greater than or equal to @0@ and
---     less than or equal to the depth of the specified @imageSubresource@
---     of {imageparam}
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-00201# If {imageparam} is
---     of type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @imageOffset.z@ /must/ be @0@ and @imageExtent.depth@
---     /must/ be @1@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-bufferRowLength-00203# If
---     {imageparam} is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ /must/ be a
---     multiple of the compressed texel block width
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-bufferImageHeight-00204# If
---     {imageparam} is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferImageHeight@ /must/ be a
---     multiple of the compressed texel block height
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00205# If {imageparam}
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, all members of @imageOffset@ /must/
---     be a multiple of the corresponding dimensions of the compressed
---     texel block
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00206# If
---     {imageparam} is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferOffset@ /must/ be a multiple
---     of the compressed texel block size in bytes
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00207# If {imageparam}
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.width@ /must/ be a
---     multiple of the compressed texel block width or (@imageExtent.width@
---     + @imageOffset.x@) /must/ equal the width of the specified
---     @imageSubresource@ of {imageparam}
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00208# If {imageparam}
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.height@ /must/ be a
---     multiple of the compressed texel block height or
---     (@imageExtent.height@ + @imageOffset.y@) /must/ equal the height of
---     the specified @imageSubresource@ of {imageparam}
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00209# If {imageparam}
---     is a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @imageExtent.depth@ /must/ be a
---     multiple of the compressed texel block depth or (@imageExtent.depth@
---     + @imageOffset.z@) /must/ equal the depth of the specified
---     @imageSubresource@ of {imageparam}
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-aspectMask-00211# For each element
---     of @pRegions@, @imageSubresource.aspectMask@ /must/ specify aspects
---     present in {imageparam}
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-aspectMask-01560# If {imageparam}
---     has a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-requiring-sampler-ycbcr-conversion multi-planar format>,
---     then for each element of @pRegions@, @imageSubresource.aspectMask@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     (with
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---     valid only for image formats with three planes)
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-baseArrayLayer-00213# If
---     {imageparam} is of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', for each element of
---     @pRegions@, @imageSubresource.baseArrayLayer@ /must/ be @0@ and
---     @imageSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-04725# If {imageparam} is
---     not a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ multiplied by the
---     texel block size of {imageparam} /must/ be less than or equal to
---     231-1
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-04726# If {imageparam} is
---     a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#blocked-image blocked image>,
---     for each element of @pRegions@, @bufferRowLength@ divided by the
---     compressed texel block width and then multiplied by the texel block
---     size of {imageparam} /must/ be less than or equal to 231-1
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-commandBuffer-04052# If the queue
---     family used to create the 'Vulkan.Core10.Handles.CommandPool' which
---     @commandBuffer@ was allocated from does not support
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_GRAPHICS_BIT' or
---     'Vulkan.Core10.Enums.QueueFlagBits.QUEUE_COMPUTE_BIT', the
---     @bufferOffset@ member of any element of @pRegions@ /must/ be a
---     multiple of @4@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-04053# If {imageparam}
---     has a depth\/stencil format, the @bufferOffset@ member of any
---     element of @pRegions@ /must/ be a multiple of @4@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR'
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImage-parameter# @srcImage@
---     /must/ be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-parameter#
---     @srcImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-parameter# @dstBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-pRegions-parameter# @pRegions@
---     /must/ be a valid pointer to an array of @regionCount@ valid
---     'BufferImageCopy2KHR' structures
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-regionCount-arraylength#
---     @regionCount@ /must/ be greater than @0@
---
--- -   #VUID-VkCopyImageToBufferInfo2KHR-commonparent# Both of @dstBuffer@,
---     and @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.Buffer', 'BufferImageCopy2KHR',
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdCopyImageToBuffer2KHR'
-data CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2KHR
-  { -- | @srcImage@ is the source image.
-    srcImage :: Image
-  , -- | @srcImageLayout@ is the layout of the source image subresources for the
-    -- copy.
-    srcImageLayout :: ImageLayout
-  , -- | @dstBuffer@ is the destination buffer.
-    dstBuffer :: Buffer
-  , -- | @pRegions@ is a pointer to an array of 'BufferImageCopy2KHR' structures
-    -- specifying the regions to copy.
-    regions :: Vector (SomeStruct BufferImageCopy2KHR)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CopyImageToBufferInfo2KHR)
-#endif
-deriving instance Show CopyImageToBufferInfo2KHR
-
-instance ToCStruct CopyImageToBufferInfo2KHR where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CopyImageToBufferInfo2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Buffer)) (dstBuffer)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
-    pPRegions' <- ContT $ allocaBytes @(BufferImageCopy2KHR _) ((Data.Vector.length (regions)) * 72)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPRegions' `plusPtr` (72 * (i)) :: Ptr (BufferImageCopy2KHR _))) (e) . ($ ())) (regions)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr (BufferImageCopy2KHR _)))) (pPRegions')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Buffer)) (zero)
-    f
-
-instance FromCStruct CopyImageToBufferInfo2KHR where
-  peekCStruct p = do
-    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
-    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    dstBuffer <- peek @Buffer ((p `plusPtr` 32 :: Ptr Buffer))
-    regionCount <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    pRegions <- peek @(Ptr (BufferImageCopy2KHR _)) ((p `plusPtr` 48 :: Ptr (Ptr (BufferImageCopy2KHR _))))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekSomeCStruct (forgetExtensions ((pRegions `advancePtrBytes` (72 * (i)) :: Ptr (BufferImageCopy2KHR _)))))
-    pure $ CopyImageToBufferInfo2KHR
-             srcImage srcImageLayout dstBuffer pRegions'
-
-instance Zero CopyImageToBufferInfo2KHR where
-  zero = CopyImageToBufferInfo2KHR
-           zero
-           zero
-           zero
-           mempty
-
-
--- | VkResolveImageInfo2KHR - Structure specifying parameters of resolve
--- image command
---
--- == Valid Usage
---
--- -   #VUID-VkResolveImageInfo2KHR-pRegions-00255# The union of all source
---     regions, and the union of all destination regions, specified by the
---     elements of @pRegions@, /must/ not overlap in memory
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-00256# If @srcImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-00257# @srcImage@ /must/ have
---     a sample count equal to any valid sample count value other than
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImage-00258# If @dstImage@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImage-00259# @dstImage@ /must/ have
---     a sample count equal to
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImageLayout-00260# @srcImageLayout@
---     /must/ specify the layout of the image subresources of @srcImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImageLayout-01400# @srcImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImageLayout-00262# @dstImageLayout@
---     /must/ specify the layout of the image subresources of @dstImage@
---     specified in @pRegions@ at the time this command is executed on a
---     'Vulkan.Core10.Handles.Device'
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImageLayout-01401# @dstImageLayout@
---     /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHARED_PRESENT_KHR',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImage-02003# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
---
--- -   #VUID-VkResolveImageInfo2KHR-linearColorAttachment-06519# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-linearColorAttachment linearColorAttachment>
---     feature is enabled and the image is created with
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR', the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-format-features format features>
---     of @dstImage@ /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-01386# @srcImage@ and
---     @dstImage@ /must/ have been created with the same image format
---
--- -   #VUID-VkResolveImageInfo2KHR-srcSubresource-01709# The
---     @srcSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @srcImage@ was created
---
--- -   #VUID-VkResolveImageInfo2KHR-dstSubresource-01710# The
---     @dstSubresource.mipLevel@ member of each element of @pRegions@
---     /must/ be less than the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @dstImage@ was created
---
--- -   #VUID-VkResolveImageInfo2KHR-srcSubresource-01711# The
---     @srcSubresource.baseArrayLayer@ + @srcSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @srcImage@ was created
---
--- -   #VUID-VkResolveImageInfo2KHR-dstSubresource-01712# The
---     @dstSubresource.baseArrayLayer@ + @dstSubresource.layerCount@ of
---     each element of @pRegions@ /must/ be less than or equal to the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @dstImage@ was created
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImage-02546# @dstImage@ and
---     @srcImage@ /must/ not have been created with @flags@ containing
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-04446# If either @srcImage@ or
---     @dstImage@ are of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @srcSubresource.baseArrayLayer@ /must/ be @0@ and
---     @srcSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-04447# If either @srcImage@ or
---     @dstImage@ are of type
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_3D', then for each element
---     of @pRegions@, @dstSubresource.baseArrayLayer@ /must/ be @0@ and
---     @dstSubresource.layerCount@ /must/ be @1@
---
--- -   #VUID-VkResolveImageInfo2KHR-srcOffset-00269# For each element of
---     @pRegions@, @srcOffset.x@ and (@extent.width@ + @srcOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkResolveImageInfo2KHR-srcOffset-00270# For each element of
---     @pRegions@, @srcOffset.y@ and (@extent.height@ + @srcOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-00271# If @srcImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
---     element of @pRegions@, @srcOffset.y@ /must/ be @0@ and
---     @extent.height@ /must/ be @1@
---
--- -   #VUID-VkResolveImageInfo2KHR-srcOffset-00272# For each element of
---     @pRegions@, @srcOffset.z@ and (@extent.depth@ + @srcOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @srcSubresource@ of @srcImage@
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-00273# If @srcImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @srcOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- -   #VUID-VkResolveImageInfo2KHR-dstOffset-00274# For each element of
---     @pRegions@, @dstOffset.x@ and (@extent.width@ + @dstOffset.x@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the width of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkResolveImageInfo2KHR-dstOffset-00275# For each element of
---     @pRegions@, @dstOffset.y@ and (@extent.height@ + @dstOffset.y@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the height of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImage-00276# If @dstImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D', then for each
---     element of @pRegions@, @dstOffset.y@ /must/ be @0@ and
---     @extent.height@ /must/ be @1@
---
--- -   #VUID-VkResolveImageInfo2KHR-dstOffset-00277# For each element of
---     @pRegions@, @dstOffset.z@ and (@extent.depth@ + @dstOffset.z@)
---     /must/ both be greater than or equal to @0@ and less than or equal
---     to the depth of the specified @dstSubresource@ of @dstImage@
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImage-00278# If @dstImage@ is of
---     type 'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_1D' or
---     'Vulkan.Core10.Enums.ImageType.IMAGE_TYPE_2D', then for each element
---     of @pRegions@, @dstOffset.z@ /must/ be @0@ and @extent.depth@ /must/
---     be @1@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkResolveImageInfo2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR'
---
--- -   #VUID-VkResolveImageInfo2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImage-parameter# @srcImage@ /must/
---     be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkResolveImageInfo2KHR-srcImageLayout-parameter#
---     @srcImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImage-parameter# @dstImage@ /must/
---     be a valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkResolveImageInfo2KHR-dstImageLayout-parameter#
---     @dstImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkResolveImageInfo2KHR-pRegions-parameter# @pRegions@ /must/
---     be a valid pointer to an array of @regionCount@ valid
---     'ImageResolve2KHR' structures
---
--- -   #VUID-VkResolveImageInfo2KHR-regionCount-arraylength# @regionCount@
---     /must/ be greater than @0@
---
--- -   #VUID-VkResolveImageInfo2KHR-commonparent# Both of @dstImage@, and
---     @srcImage@ /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_KHR_copy_commands2 VK_KHR_copy_commands2>,
--- 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout', 'ImageResolve2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'cmdResolveImage2KHR'
-data ResolveImageInfo2KHR = ResolveImageInfo2KHR
-  { -- | @srcImage@ is the source image.
-    srcImage :: Image
-  , -- | @srcImageLayout@ is the layout of the source image subresources for the
-    -- resolve.
-    srcImageLayout :: ImageLayout
-  , -- | @dstImage@ is the destination image.
-    dstImage :: Image
-  , -- | @dstImageLayout@ is the layout of the destination image subresources for
-    -- the resolve.
-    dstImageLayout :: ImageLayout
-  , -- | @pRegions@ is a pointer to an array of 'ImageResolve2KHR' structures
-    -- specifying the regions to resolve.
-    regions :: Vector ImageResolve2KHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ResolveImageInfo2KHR)
-#endif
-deriving instance Show ResolveImageInfo2KHR
-
-instance ToCStruct ResolveImageInfo2KHR where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ResolveImageInfo2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Image)) (srcImage)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (srcImageLayout)
-    lift $ poke ((p `plusPtr` 32 :: Ptr Image)) (dstImage)
-    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (dstImageLayout)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (regions)) :: Word32))
-    pPRegions' <- ContT $ allocaBytes @ImageResolve2KHR ((Data.Vector.length (regions)) * 88)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPRegions' `plusPtr` (88 * (i)) :: Ptr ImageResolve2KHR) (e)) (regions)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr ImageResolve2KHR))) (pPRegions')
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Image)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
-    f
-
-instance FromCStruct ResolveImageInfo2KHR where
-  peekCStruct p = do
-    srcImage <- peek @Image ((p `plusPtr` 16 :: Ptr Image))
-    srcImageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    dstImage <- peek @Image ((p `plusPtr` 32 :: Ptr Image))
-    dstImageLayout <- peek @ImageLayout ((p `plusPtr` 40 :: Ptr ImageLayout))
-    regionCount <- peek @Word32 ((p `plusPtr` 44 :: Ptr Word32))
-    pRegions <- peek @(Ptr ImageResolve2KHR) ((p `plusPtr` 48 :: Ptr (Ptr ImageResolve2KHR)))
-    pRegions' <- generateM (fromIntegral regionCount) (\i -> peekCStruct @ImageResolve2KHR ((pRegions `advancePtrBytes` (88 * (i)) :: Ptr ImageResolve2KHR)))
-    pure $ ResolveImageInfo2KHR
-             srcImage srcImageLayout dstImage dstImageLayout pRegions'
-
-instance Zero ResolveImageInfo2KHR where
-  zero = ResolveImageInfo2KHR
-           zero
-           zero
-           zero
-           zero
-           mempty
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
+-- [__Contact__]
+--
+--     -   Jeff Leger
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_copy_commands2] @jackohound%0A<<Here describe the issue or question you have about the VK_KHR_copy_commands2 extension>> >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-07-06
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   None
+--
+-- [__Contributors__]
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Jan-Harald Fredriksen, ARM
+--
+--     -   Tom Olson, ARM
+--
+-- == Description
+--
+-- This extension provides extensible versions of the Vulkan buffer and
+-- image copy commands. The new commands are functionally identical to the
+-- core commands, except that their copy parameters are specified using
+-- extensible structures that can be used to pass extension-specific
+-- information.
+--
+-- The following extensible copy commands are introduced with this
+-- extension: 'cmdCopyBuffer2KHR', 'cmdCopyImage2KHR',
+-- 'cmdCopyBufferToImage2KHR', 'cmdCopyImageToBuffer2KHR',
+-- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command contains an
+-- @*Info2KHR@ structure parameter that includes @sType@\/@pNext@ members.
+-- Lower level structures describing each region to be copied are also
+-- extended with @sType@\/@pNext@ members.
+--
+-- == New Commands
+--
+-- -   'cmdBlitImage2KHR'
+--
+-- -   'cmdCopyBuffer2KHR'
+--
+-- -   'cmdCopyBufferToImage2KHR'
+--
+-- -   'cmdCopyImage2KHR'
+--
+-- -   'cmdCopyImageToBuffer2KHR'
+--
+-- -   'cmdResolveImage2KHR'
+--
+-- == New Structures
+--
+-- -   'BlitImageInfo2KHR'
+--
+-- -   'BufferCopy2KHR'
+--
+-- -   'BufferImageCopy2KHR'
+--
+-- -   'CopyBufferInfo2KHR'
+--
+-- -   'CopyBufferToImageInfo2KHR'
+--
+-- -   'CopyImageInfo2KHR'
+--
+-- -   'CopyImageToBufferInfo2KHR'
+--
+-- -   'ImageBlit2KHR'
+--
+-- -   'ImageCopy2KHR'
+--
+-- -   'ImageResolve2KHR'
+--
+-- -   'ResolveImageInfo2KHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_COPY_COMMANDS_2_EXTENSION_NAME'
+--
+-- -   'KHR_COPY_COMMANDS_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_BUFFER_COPY_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_IMAGE_BLIT_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_IMAGE_COPY_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR'
+--
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-07-06 (Jeff Leger)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- 'BlitImageInfo2KHR', 'BufferCopy2KHR', 'BufferImageCopy2KHR',
+-- 'CopyBufferInfo2KHR', 'CopyBufferToImageInfo2KHR', 'CopyImageInfo2KHR',
+-- 'CopyImageToBufferInfo2KHR', 'ImageBlit2KHR', 'ImageCopy2KHR',
+-- 'ImageResolve2KHR', 'ResolveImageInfo2KHR', 'cmdBlitImage2KHR',
+-- 'cmdCopyBuffer2KHR', 'cmdCopyBufferToImage2KHR', 'cmdCopyImage2KHR',
+-- 'cmdCopyImageToBuffer2KHR', 'cmdResolveImage2KHR'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_copy_commands2 Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_KHR_copy_commands2  ( pattern STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR
+                                                , pattern STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR
+                                                , pattern STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR
+                                                , pattern STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR
+                                                , pattern STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR
+                                                , pattern STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR
+                                                , pattern STRUCTURE_TYPE_BUFFER_COPY_2_KHR
+                                                , pattern STRUCTURE_TYPE_IMAGE_COPY_2_KHR
+                                                , pattern STRUCTURE_TYPE_IMAGE_BLIT_2_KHR
+                                                , pattern STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR
+                                                , pattern STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR
+                                                , cmdCopyBuffer2KHR
+                                                , cmdCopyImage2KHR
+                                                , cmdBlitImage2KHR
+                                                , cmdCopyBufferToImage2KHR
+                                                , cmdCopyImageToBuffer2KHR
+                                                , cmdResolveImage2KHR
+                                                , BufferCopy2KHR
+                                                , ImageCopy2KHR
+                                                , ImageBlit2KHR
+                                                , BufferImageCopy2KHR
+                                                , ImageResolve2KHR
+                                                , CopyBufferInfo2KHR
+                                                , CopyImageInfo2KHR
+                                                , BlitImageInfo2KHR
+                                                , CopyBufferToImageInfo2KHR
+                                                , CopyImageToBufferInfo2KHR
+                                                , ResolveImageInfo2KHR
+                                                , KHR_COPY_COMMANDS_2_SPEC_VERSION
+                                                , pattern KHR_COPY_COMMANDS_2_SPEC_VERSION
+                                                , KHR_COPY_COMMANDS_2_EXTENSION_NAME
+                                                , pattern KHR_COPY_COMMANDS_2_EXTENSION_NAME
+                                                ) where
+
+import Data.String (IsString)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (cmdBlitImage2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (cmdCopyBuffer2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (cmdCopyBufferToImage2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (cmdCopyImage2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (cmdCopyImageToBuffer2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (cmdResolveImage2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BlitImageInfo2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BufferCopy2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (BufferImageCopy2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyBufferInfo2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyBufferToImageInfo2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageInfo2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (CopyImageToBufferInfo2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageBlit2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageCopy2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ImageResolve2)
+import Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2 (ResolveImageInfo2)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BLIT_IMAGE_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_COPY_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_BUFFER_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_BLIT_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_COPY_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_RESOLVE_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR"
+pattern STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = STRUCTURE_TYPE_COPY_BUFFER_INFO_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR"
+pattern STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = STRUCTURE_TYPE_COPY_IMAGE_INFO_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR"
+pattern STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR"
+pattern STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR"
+pattern STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = STRUCTURE_TYPE_BLIT_IMAGE_INFO_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR"
+pattern STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR"
+pattern STRUCTURE_TYPE_BUFFER_COPY_2_KHR = STRUCTURE_TYPE_BUFFER_COPY_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR"
+pattern STRUCTURE_TYPE_IMAGE_COPY_2_KHR = STRUCTURE_TYPE_IMAGE_COPY_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR"
+pattern STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = STRUCTURE_TYPE_IMAGE_BLIT_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR"
+pattern STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR"
+pattern STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = STRUCTURE_TYPE_IMAGE_RESOLVE_2
+
+
+-- No documentation found for TopLevel "vkCmdCopyBuffer2KHR"
+cmdCopyBuffer2KHR = cmdCopyBuffer2
+
+
+-- No documentation found for TopLevel "vkCmdCopyImage2KHR"
+cmdCopyImage2KHR = cmdCopyImage2
+
+
+-- No documentation found for TopLevel "vkCmdBlitImage2KHR"
+cmdBlitImage2KHR = cmdBlitImage2
+
+
+-- No documentation found for TopLevel "vkCmdCopyBufferToImage2KHR"
+cmdCopyBufferToImage2KHR = cmdCopyBufferToImage2
+
+
+-- No documentation found for TopLevel "vkCmdCopyImageToBuffer2KHR"
+cmdCopyImageToBuffer2KHR = cmdCopyImageToBuffer2
+
+
+-- No documentation found for TopLevel "vkCmdResolveImage2KHR"
+cmdResolveImage2KHR = cmdResolveImage2
+
+
+-- No documentation found for TopLevel "VkBufferCopy2KHR"
+type BufferCopy2KHR = BufferCopy2
+
+
+-- No documentation found for TopLevel "VkImageCopy2KHR"
+type ImageCopy2KHR = ImageCopy2
+
+
+-- No documentation found for TopLevel "VkImageBlit2KHR"
+type ImageBlit2KHR = ImageBlit2
+
+
+-- No documentation found for TopLevel "VkBufferImageCopy2KHR"
+type BufferImageCopy2KHR = BufferImageCopy2
+
+
+-- No documentation found for TopLevel "VkImageResolve2KHR"
+type ImageResolve2KHR = ImageResolve2
+
+
+-- No documentation found for TopLevel "VkCopyBufferInfo2KHR"
+type CopyBufferInfo2KHR = CopyBufferInfo2
+
+
+-- No documentation found for TopLevel "VkCopyImageInfo2KHR"
+type CopyImageInfo2KHR = CopyImageInfo2
+
+
+-- No documentation found for TopLevel "VkBlitImageInfo2KHR"
+type BlitImageInfo2KHR = BlitImageInfo2
+
+
+-- No documentation found for TopLevel "VkCopyBufferToImageInfo2KHR"
+type CopyBufferToImageInfo2KHR = CopyBufferToImageInfo2
+
+
+-- No documentation found for TopLevel "VkCopyImageToBufferInfo2KHR"
+type CopyImageToBufferInfo2KHR = CopyImageToBufferInfo2
+
+
+-- No documentation found for TopLevel "VkResolveImageInfo2KHR"
+type ResolveImageInfo2KHR = ResolveImageInfo2
 
 
 type KHR_COPY_COMMANDS_2_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot b/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_copy_commands2.hs-boot
+++ /dev/null
@@ -1,262 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_copy_commands2 - device extension
---
--- == VK_KHR_copy_commands2
---
--- [__Name String__]
---     @VK_KHR_copy_commands2@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     338
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
--- [__Contact__]
---
---     -   Jeff Leger
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_copy_commands2] @jackohound%0A<<Here describe the issue or question you have about the VK_KHR_copy_commands2 extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-07-06
---
--- [__Interactions and External Dependencies__]
---
---     -   None
---
--- [__Contributors__]
---
---     -   Jeff Leger, Qualcomm
---
---     -   Tobias Hector, AMD
---
---     -   Jan-Harald Fredriksen, ARM
---
---     -   Tom Olson, ARM
---
--- == Description
---
--- This extension provides extensible versions of the Vulkan buffer and
--- image copy commands. The new commands are functionally identical to the
--- core commands, except that their copy parameters are specified using
--- extensible structures that can be used to pass extension-specific
--- information.
---
--- The following extensible copy commands are introduced with this
--- extension: 'cmdCopyBuffer2KHR', 'cmdCopyImage2KHR',
--- 'cmdCopyBufferToImage2KHR', 'cmdCopyImageToBuffer2KHR',
--- 'cmdBlitImage2KHR', and 'cmdResolveImage2KHR'. Each command contains an
--- @*Info2KHR@ structure parameter that includes @sType@\/@pNext@ members.
--- Lower level structures describing each region to be copied are also
--- extended with @sType@\/@pNext@ members.
---
--- == New Commands
---
--- -   'cmdBlitImage2KHR'
---
--- -   'cmdCopyBuffer2KHR'
---
--- -   'cmdCopyBufferToImage2KHR'
---
--- -   'cmdCopyImage2KHR'
---
--- -   'cmdCopyImageToBuffer2KHR'
---
--- -   'cmdResolveImage2KHR'
---
--- == New Structures
---
--- -   'BlitImageInfo2KHR'
---
--- -   'BufferCopy2KHR'
---
--- -   'BufferImageCopy2KHR'
---
--- -   'CopyBufferInfo2KHR'
---
--- -   'CopyBufferToImageInfo2KHR'
---
--- -   'CopyImageInfo2KHR'
---
--- -   'CopyImageToBufferInfo2KHR'
---
--- -   'ImageBlit2KHR'
---
--- -   'ImageCopy2KHR'
---
--- -   'ImageResolve2KHR'
---
--- -   'ResolveImageInfo2KHR'
---
--- == New Enum Constants
---
--- -   'KHR_COPY_COMMANDS_2_EXTENSION_NAME'
---
--- -   'KHR_COPY_COMMANDS_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_COPY_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_BLIT_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_COPY_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR'
---
--- == Version History
---
--- -   Revision 1, 2020-07-06 (Jeff Leger)
---
---     -   Internal revisions
---
--- == See Also
---
--- 'BlitImageInfo2KHR', 'BufferCopy2KHR', 'BufferImageCopy2KHR',
--- 'CopyBufferInfo2KHR', 'CopyBufferToImageInfo2KHR', 'CopyImageInfo2KHR',
--- 'CopyImageToBufferInfo2KHR', 'ImageBlit2KHR', 'ImageCopy2KHR',
--- 'ImageResolve2KHR', 'ResolveImageInfo2KHR', 'cmdBlitImage2KHR',
--- 'cmdCopyBuffer2KHR', 'cmdCopyBufferToImage2KHR', 'cmdCopyImage2KHR',
--- 'cmdCopyImageToBuffer2KHR', 'cmdResolveImage2KHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_copy_commands2 Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_copy_commands2  ( BlitImageInfo2KHR
-                                                , BufferCopy2KHR
-                                                , BufferImageCopy2KHR
-                                                , CopyBufferInfo2KHR
-                                                , CopyBufferToImageInfo2KHR
-                                                , CopyImageInfo2KHR
-                                                , CopyImageToBufferInfo2KHR
-                                                , ImageBlit2KHR
-                                                , ImageCopy2KHR
-                                                , ImageResolve2KHR
-                                                , ResolveImageInfo2KHR
-                                                ) 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 BlitImageInfo2KHR
-
-instance ToCStruct BlitImageInfo2KHR
-instance Show BlitImageInfo2KHR
-
-instance FromCStruct BlitImageInfo2KHR
-
-
-data BufferCopy2KHR
-
-instance ToCStruct BufferCopy2KHR
-instance Show BufferCopy2KHR
-
-instance FromCStruct BufferCopy2KHR
-
-
-type role BufferImageCopy2KHR nominal
-data BufferImageCopy2KHR (es :: [Type])
-
-instance (Extendss BufferImageCopy2KHR es, PokeChain es) => ToCStruct (BufferImageCopy2KHR es)
-instance Show (Chain es) => Show (BufferImageCopy2KHR es)
-
-instance (Extendss BufferImageCopy2KHR es, PeekChain es) => FromCStruct (BufferImageCopy2KHR es)
-
-
-data CopyBufferInfo2KHR
-
-instance ToCStruct CopyBufferInfo2KHR
-instance Show CopyBufferInfo2KHR
-
-instance FromCStruct CopyBufferInfo2KHR
-
-
-data CopyBufferToImageInfo2KHR
-
-instance ToCStruct CopyBufferToImageInfo2KHR
-instance Show CopyBufferToImageInfo2KHR
-
-instance FromCStruct CopyBufferToImageInfo2KHR
-
-
-data CopyImageInfo2KHR
-
-instance ToCStruct CopyImageInfo2KHR
-instance Show CopyImageInfo2KHR
-
-instance FromCStruct CopyImageInfo2KHR
-
-
-data CopyImageToBufferInfo2KHR
-
-instance ToCStruct CopyImageToBufferInfo2KHR
-instance Show CopyImageToBufferInfo2KHR
-
-instance FromCStruct CopyImageToBufferInfo2KHR
-
-
-type role ImageBlit2KHR nominal
-data ImageBlit2KHR (es :: [Type])
-
-instance (Extendss ImageBlit2KHR es, PokeChain es) => ToCStruct (ImageBlit2KHR es)
-instance Show (Chain es) => Show (ImageBlit2KHR es)
-
-instance (Extendss ImageBlit2KHR es, PeekChain es) => FromCStruct (ImageBlit2KHR es)
-
-
-data ImageCopy2KHR
-
-instance ToCStruct ImageCopy2KHR
-instance Show ImageCopy2KHR
-
-instance FromCStruct ImageCopy2KHR
-
-
-data ImageResolve2KHR
-
-instance ToCStruct ImageResolve2KHR
-instance Show ImageResolve2KHR
-
-instance FromCStruct ImageResolve2KHR
-
-
-data ResolveImageInfo2KHR
-
-instance ToCStruct ResolveImageInfo2KHR
-instance Show ResolveImageInfo2KHR
-
-instance FromCStruct ResolveImageInfo2KHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs b/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs
--- a/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_create_renderpass2.hs
@@ -159,7 +159,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_create_renderpass2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_create_renderpass2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs b/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
--- a/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
+++ b/src/Vulkan/Extensions/VK_KHR_dedicated_allocation.hs
@@ -211,7 +211,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dedicated_allocation Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dedicated_allocation Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs b/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
--- a/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
+++ b/src/Vulkan/Extensions/VK_KHR_deferred_host_operations.hs
@@ -264,7 +264,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_deferred_host_operations Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_deferred_host_operations Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -365,7 +365,7 @@
                            => -- | @device@ is the device which owns @operation@.
                               Device
                            -> -- | @pAllocator@ controls host memory allocation as described in the
-                              -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                              -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                               -- chapter.
                               ("allocator" ::: Maybe AllocationCallbacks)
                            -> io (DeferredOperationKHR)
@@ -456,7 +456,7 @@
                             -> -- | @operation@ is the completed operation to be destroyed.
                                DeferredOperationKHR
                             -> -- | @pAllocator@ controls host memory allocation as described in the
-                               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                -- chapter.
                                ("allocator" ::: Maybe AllocationCallbacks)
                             -> io ()
diff --git a/src/Vulkan/Extensions/VK_KHR_depth_stencil_resolve.hs b/src/Vulkan/Extensions/VK_KHR_depth_stencil_resolve.hs
--- a/src/Vulkan/Extensions/VK_KHR_depth_stencil_resolve.hs
+++ b/src/Vulkan/Extensions/VK_KHR_depth_stencil_resolve.hs
@@ -150,7 +150,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_depth_stencil_resolve Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs b/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
--- a/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
+++ b/src/Vulkan/Extensions/VK_KHR_descriptor_update_template.hs
@@ -160,7 +160,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_descriptor_update_template Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_descriptor_update_template Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_device_group.hs b/src/Vulkan/Extensions/VK_KHR_device_group.hs
--- a/src/Vulkan/Extensions/VK_KHR_device_group.hs
+++ b/src/Vulkan/Extensions/VK_KHR_device_group.hs
@@ -149,7 +149,7 @@
 --     -   'MemoryAllocateFlagsInfoKHR'
 --
 -- -   Extending 'Vulkan.Core10.CommandBufferBuilding.RenderPassBeginInfo',
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
 --
 --     -   'DeviceGroupRenderPassBeginInfoKHR'
 --
@@ -317,11 +317,11 @@
 --
 -- == New Built-in Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-deviceindex DeviceIndex>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-deviceindex DeviceIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DeviceGroup DeviceGroup>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DeviceGroup DeviceGroup>
 --
 -- == Version History
 --
@@ -358,7 +358,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_device_group Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_device_group_creation.hs b/src/Vulkan/Extensions/VK_KHR_device_group_creation.hs
--- a/src/Vulkan/Extensions/VK_KHR_device_group_creation.hs
+++ b/src/Vulkan/Extensions/VK_KHR_device_group_creation.hs
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_device_group_creation Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_device_group_creation Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_display.hs b/src/Vulkan/Extensions/VK_KHR_display.hs
--- a/src/Vulkan/Extensions/VK_KHR_display.hs
+++ b/src/Vulkan/Extensions/VK_KHR_display.hs
@@ -507,7 +507,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -1047,7 +1047,7 @@
                      -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                         -- display mode object when there is no more specific allocator available
                         -- (see
-                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (DisplayModeKHR)
 createDisplayModeKHR physicalDevice display createInfo allocator = liftIO . evalContT $ do
@@ -1194,7 +1194,7 @@
                                 DisplaySurfaceCreateInfoKHR
                              -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                                 -- surface object when there is no more specific allocator available (see
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (SurfaceKHR)
 createDisplayPlaneSurfaceKHR instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_KHR_display.hs-boot b/src/Vulkan/Extensions/VK_KHR_display.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_display.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_display.hs-boot
@@ -507,7 +507,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
--- a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
+++ b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs
@@ -199,7 +199,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -393,7 +393,7 @@
                           -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                              -- swapchain objects when there is no more specific allocator available
                              -- (see
-                             -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                             -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                              ("allocator" ::: Maybe AllocationCallbacks)
                           -> io (("swapchains" ::: Vector SwapchainKHR))
 createSharedSwapchainsKHR device createInfos allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_display_swapchain.hs-boot
@@ -199,7 +199,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_display_swapchain Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs b/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs
--- a/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs
+++ b/src/Vulkan/Extensions/VK_KHR_draw_indirect_count.hs
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_draw_indirect_count Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_draw_indirect_count Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_driver_properties.hs b/src/Vulkan/Extensions/VK_KHR_driver_properties.hs
--- a/src/Vulkan/Extensions/VK_KHR_driver_properties.hs
+++ b/src/Vulkan/Extensions/VK_KHR_driver_properties.hs
@@ -142,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_driver_properties Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_driver_properties Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs b/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs
--- a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs
+++ b/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs
@@ -23,2301 +23,873 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
--- [__Contact__]
---
---     -   Tobias Hector
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_dynamic_rendering] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_dynamic_rendering extension>> >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_dynamic_rendering.asciidoc VK_KHR_dynamic_rendering>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2021-10-06
---
--- [__Contributors__]
---
---     -   Tobias Hector, AMD
---
---     -   Arseny Kapoulkine, Roblox
---
---     -   François Duranleau, Gameloft
---
---     -   Stuart Smith, AMD
---
---     -   Hai Nguyen, Google
---
---     -   Jean-François Roy, Google
---
---     -   Jeff Leger, Qualcomm
---
---     -   Jan-Harald Fredriksen, Arm
---
---     -   Piers Daniell, Nvidia
---
---     -   James Fitzpatrick, Imagination
---
---     -   Piotr Byszewski, Mobica
---
---     -   Jesse Hall, Google
---
---     -   Mike Blumenkrantz, Valve
---
--- == Description
---
--- This extension allows applications to create single-pass render pass
--- instances without needing to create render pass objects or framebuffers.
--- Dynamic render passes can also span across multiple primary command
--- buffers, rather than relying on secondary command buffers.
---
--- This extension also incorporates
--- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'
--- from <VK_QCOM_render_pass_store_ops.html VK_QCOM_render_pass_store_ops>,
--- enabling applications to avoid unnecessary synchronization when an
--- attachment is not written during a render pass.
---
--- == New Commands
---
--- -   'cmdBeginRenderingKHR'
---
--- -   'cmdEndRenderingKHR'
---
--- == New Structures
---
--- -   'RenderingAttachmentInfoKHR'
---
--- -   'RenderingInfoKHR'
---
--- -   Extending
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
---
---     -   'CommandBufferInheritanceRenderingInfoKHR'
---
--- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
---
---     -   'PipelineRenderingCreateInfoKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceDynamicRenderingFeaturesKHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
--- is supported:
---
--- -   Extending
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
---
---     -   'AttachmentSampleCountInfoAMD'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
--- is supported:
---
--- -   Extending 'RenderingInfoKHR':
---
---     -   'RenderingFragmentDensityMapAttachmentInfoEXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
--- is supported:
---
--- -   Extending 'RenderingInfoKHR':
---
---     -   'RenderingFragmentShadingRateAttachmentInfoKHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
--- is supported:
---
--- -   Extending
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
---
---     -   'AttachmentSampleCountInfoNV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>
--- is supported:
---
--- -   Extending
---     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
---     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'RenderingInfoKHR':
---
---     -   'MultiviewPerViewAttributesInfoNVX'
---
--- == New Enums
---
--- -   'RenderingFlagBitsKHR'
---
--- == New Bitmasks
---
--- -   'RenderingFlagsKHR'
---
--- == New Enum Constants
---
--- -   'KHR_DYNAMIC_RENDERING_EXTENSION_NAME'
---
--- -   'KHR_DYNAMIC_RENDERING_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':
---
---     -   'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
--- is supported:
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
--- is supported:
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
---     -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
--- is supported:
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
---     -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
--- is supported:
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>
--- is supported:
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'
---
--- == Version History
---
--- -   Revision 1, 2021-10-06 (Tobias Hector)
---
---     -   Initial revision
---
--- == See Also
---
--- 'CommandBufferInheritanceRenderingInfoKHR',
--- 'PhysicalDeviceDynamicRenderingFeaturesKHR',
--- 'PipelineRenderingCreateInfoKHR', 'RenderingAttachmentInfoKHR',
--- 'RenderingFlagBitsKHR', 'RenderingFlagsKHR', 'RenderingInfoKHR',
--- 'cmdBeginRenderingKHR', 'cmdEndRenderingKHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_dynamic_rendering  ( cmdBeginRenderingKHR
-                                                   , cmdUseRenderingKHR
-                                                   , cmdEndRenderingKHR
-                                                   , pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-                                                   , pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
-                                                   , pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV
-                                                   , PipelineRenderingCreateInfoKHR(..)
-                                                   , RenderingInfoKHR(..)
-                                                   , RenderingAttachmentInfoKHR(..)
-                                                   , RenderingFragmentShadingRateAttachmentInfoKHR(..)
-                                                   , RenderingFragmentDensityMapAttachmentInfoEXT(..)
-                                                   , PhysicalDeviceDynamicRenderingFeaturesKHR(..)
-                                                   , CommandBufferInheritanceRenderingInfoKHR(..)
-                                                   , AttachmentSampleCountInfoAMD(..)
-                                                   , MultiviewPerViewAttributesInfoNVX(..)
-                                                   , RenderingFlagsKHR
-                                                   , RenderingFlagBitsKHR( RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR
-                                                                         , RENDERING_SUSPENDING_BIT_KHR
-                                                                         , RENDERING_RESUMING_BIT_KHR
-                                                                         , ..
-                                                                         )
-                                                   , AttachmentSampleCountInfoNV
-                                                   , KHR_DYNAMIC_RENDERING_SPEC_VERSION
-                                                   , pattern KHR_DYNAMIC_RENDERING_SPEC_VERSION
-                                                   , KHR_DYNAMIC_RENDERING_EXTENSION_NAME
-                                                   , pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME
-                                                   ) where
-
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import GHC.IO (throwIO)
-import GHC.Ptr (castPtr)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import GHC.Show (showString)
-import Numeric (showHex)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-import Data.String (IsString)
-import Data.Type.Equality ((:~:)(Refl))
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.Core10.Enums.AttachmentLoadOp (AttachmentLoadOp)
-import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.CStruct.Extends (Chain)
-import Vulkan.Core10.CommandBufferBuilding (ClearValue)
-import Vulkan.Core10.Handles (CommandBuffer)
-import Vulkan.Core10.Handles (CommandBuffer(..))
-import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
-import Vulkan.Core10.Handles (CommandBuffer_T)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdBeginRenderingKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdEndRenderingKHR))
-import {-# SOURCE #-} Vulkan.Core11.Promoted_From_VK_KHR_device_group (DeviceGroupRenderPassBeginInfo)
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.FundamentalTypes (Extent2D)
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.Enums.Format (Format)
-import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import Vulkan.Core10.Handles (ImageView)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.FundamentalTypes (Rect2D)
-import Vulkan.Core12.Enums.ResolveModeFlagBits (ResolveModeFlagBits)
-import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT))
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INFO_KHR))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdBeginRenderingKHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfoKHR) -> IO ()) -> Ptr CommandBuffer_T -> Ptr (SomeStruct RenderingInfoKHR) -> IO ()
-
--- | vkCmdBeginRenderingKHR - Begin a dynamic render pass instance
---
--- = Description
---
--- After beginning a render pass instance, the command buffer is ready to
--- record
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing draw commands>.
---
--- If @pRenderingInfo->flags@ includes 'RENDERING_RESUMING_BIT_KHR' then
--- this render pass is resumed from a render pass instance that has been
--- suspended earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdBeginRenderingKHR-dynamicRendering-06446# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-dynamicRendering dynamicRendering>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdBeginRenderingKHR-commandBuffer-06068# If @commandBuffer@
---     is a secondary command buffer, @pRenderingInfo->flags@ /must/ not
---     include 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdBeginRenderingKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdBeginRenderingKHR-pRenderingInfo-parameter#
---     @pRenderingInfo@ /must/ be a valid pointer to a valid
---     'RenderingInfoKHR' structure
---
--- -   #VUID-vkCmdBeginRenderingKHR-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-vkCmdBeginRenderingKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdBeginRenderingKHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'RenderingInfoKHR'
-cmdBeginRenderingKHR :: forall a io
-                      . (Extendss RenderingInfoKHR a, PokeChain a, MonadIO io)
-                     => -- | @commandBuffer@ is the command buffer in which to record the command.
-                        CommandBuffer
-                     -> -- | @pRenderingInfo@ is a pointer to a 'RenderingInfoKHR' structure
-                        -- specifying details of the render pass instance to begin.
-                        (RenderingInfoKHR a)
-                     -> io ()
-cmdBeginRenderingKHR commandBuffer renderingInfo = liftIO . evalContT $ do
-  let vkCmdBeginRenderingKHRPtr = pVkCmdBeginRenderingKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdBeginRenderingKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdBeginRenderingKHR is null" Nothing Nothing
-  let vkCmdBeginRenderingKHR' = mkVkCmdBeginRenderingKHR vkCmdBeginRenderingKHRPtr
-  pRenderingInfo <- ContT $ withCStruct (renderingInfo)
-  lift $ traceAroundEvent "vkCmdBeginRenderingKHR" (vkCmdBeginRenderingKHR' (commandBufferHandle (commandBuffer)) (forgetExtensions pRenderingInfo))
-  pure $ ()
-
--- | This function will call the supplied action between calls to
--- 'cmdBeginRenderingKHR' and 'cmdEndRenderingKHR'
---
--- Note that 'cmdEndRenderingKHR' is *not* called if an exception is thrown
--- by the inner action.
-cmdUseRenderingKHR :: forall a io r . (Extendss RenderingInfoKHR a, PokeChain a, MonadIO io) => CommandBuffer -> RenderingInfoKHR a -> io r -> io r
-cmdUseRenderingKHR commandBuffer pRenderingInfo a =
-  (cmdBeginRenderingKHR commandBuffer pRenderingInfo) *> a <* (cmdEndRenderingKHR commandBuffer)
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdEndRenderingKHR
-  :: FunPtr (Ptr CommandBuffer_T -> IO ()) -> Ptr CommandBuffer_T -> IO ()
-
--- | vkCmdEndRenderingKHR - End a dynamic render pass instance
---
--- = Description
---
--- If the value of @pRenderingInfo->flags@ used to begin this render pass
--- instance included 'RENDERING_SUSPENDING_BIT_KHR', then this render pass
--- is suspended and will be resumed later in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdEndRenderingKHR-None-06161# The current render pass
---     instance /must/ have been begun with 'cmdBeginRenderingKHR'
---
--- -   #VUID-vkCmdEndRenderingKHR-commandBuffer-06162# The current render
---     pass instance /must/ have been begun in @commandBuffer@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdEndRenderingKHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdEndRenderingKHR-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-vkCmdEndRenderingKHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics operations
---
--- -   #VUID-vkCmdEndRenderingKHR-renderpass# This command /must/ only be
---     called inside of a render pass instance
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Inside                                                                                                                 | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        |                                                                                                                       |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.Handles.CommandBuffer'
-cmdEndRenderingKHR :: forall io
-                    . (MonadIO io)
-                   => -- | @commandBuffer@ is the command buffer in which to record the command.
-                      CommandBuffer
-                   -> io ()
-cmdEndRenderingKHR commandBuffer = liftIO $ do
-  let vkCmdEndRenderingKHRPtr = pVkCmdEndRenderingKHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdEndRenderingKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdEndRenderingKHR is null" Nothing Nothing
-  let vkCmdEndRenderingKHR' = mkVkCmdEndRenderingKHR vkCmdEndRenderingKHRPtr
-  traceAroundEvent "vkCmdEndRenderingKHR" (vkCmdEndRenderingKHR' (commandBufferHandle (commandBuffer)))
-  pure $ ()
-
-
--- No documentation found for TopLevel "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
-pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
-pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
-
-
--- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV"
-pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
-
-
--- | VkPipelineRenderingCreateInfoKHR - Structure specifying attachment
--- formats
---
--- = Description
---
--- When a pipeline is created without a 'Vulkan.Core10.Handles.RenderPass',
--- if this structure is present in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it specifies the
--- view mask and format of attachments used for rendering. If this
--- structure is not specified, and the pipeline does not include a
--- 'Vulkan.Core10.Handles.RenderPass', @viewMask@ and
--- @colorAttachmentCount@ are @0@, and @depthAttachmentFormat@ and
--- @stencilAttachmentFormat@ are
--- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED'. If a graphics pipeline is
--- created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters of
--- this structure are ignored.
---
--- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of
--- @pColorAttachmentFormats@ is
--- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the
--- corresponding attachment is unused within the render pass. Valid formats
--- indicate that an attachment /can/ be used - but it is still valid to set
--- the attachment to @NULL@ when beginning rendering.
---
--- == Valid Usage
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-pColorAttachmentFormats-06495#
---     If any element of @pColorAttachmentFormats@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
---     that includes either
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
---     or
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-depthAttachmentFormat-06065#
---     If @depthAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-stencilAttachmentFormat-06164#
---     If @stencilAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-depthAttachmentFormat-06165#
---     If @depthAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and
---     @stencilAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
---     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-multiview-06066# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>
---     feature is not enabled, @viewMask@ /must/ be @0@
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-viewMask-06067# The index of
---     the most significant bit in @viewMask@ /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-pColorAttachmentFormats-parameter#
---     If @colorAttachmentCount@ is not @0@, @pColorAttachmentFormats@
---     /must/ be a valid pointer to an array of @colorAttachmentCount@
---     valid 'Vulkan.Core10.Enums.Format.Format' values
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-depthAttachmentFormat-parameter#
---     @depthAttachmentFormat@ /must/ be a valid
---     'Vulkan.Core10.Enums.Format.Format' value
---
--- -   #VUID-VkPipelineRenderingCreateInfoKHR-stencilAttachmentFormat-parameter#
---     @stencilAttachmentFormat@ /must/ be a valid
---     'Vulkan.Core10.Enums.Format.Format' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.Enums.Format.Format',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfoKHR
-  { -- | @viewMask@ is the viewMask used for rendering.
-    viewMask :: Word32
-  , -- | @pColorAttachmentFormats@ is a pointer to an array of
-    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color
-    -- attachments used in this pipeline.
-    colorAttachmentFormats :: Vector Format
-  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
-    -- defining the format of the depth attachment used in this pipeline.
-    depthAttachmentFormat :: Format
-  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
-    -- defining the format of the stencil attachment used in this pipeline.
-    stencilAttachmentFormat :: Format
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PipelineRenderingCreateInfoKHR)
-#endif
-deriving instance Show PipelineRenderingCreateInfoKHR
-
-instance ToCStruct PipelineRenderingCreateInfoKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PipelineRenderingCreateInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) (viewMask)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentFormats)) :: Word32))
-    pPColorAttachmentFormats' <- ContT $ allocaBytes @Format ((Data.Vector.length (colorAttachmentFormats)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (colorAttachmentFormats)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr Format))) (pPColorAttachmentFormats')
-    lift $ poke ((p `plusPtr` 32 :: Ptr Format)) (depthAttachmentFormat)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Format)) (stencilAttachmentFormat)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 32 :: Ptr Format)) (zero)
-    poke ((p `plusPtr` 36 :: Ptr Format)) (zero)
-    f
-
-instance FromCStruct PipelineRenderingCreateInfoKHR where
-  peekCStruct p = do
-    viewMask <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 24 :: Ptr (Ptr Format)))
-    pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Format ((pColorAttachmentFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))
-    depthAttachmentFormat <- peek @Format ((p `plusPtr` 32 :: Ptr Format))
-    stencilAttachmentFormat <- peek @Format ((p `plusPtr` 36 :: Ptr Format))
-    pure $ PipelineRenderingCreateInfoKHR
-             viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat
-
-instance Zero PipelineRenderingCreateInfoKHR where
-  zero = PipelineRenderingCreateInfoKHR
-           zero
-           mempty
-           zero
-           zero
-
-
--- | VkRenderingInfoKHR - Structure specifying render pass instance begin
--- info
---
--- = Description
---
--- If @viewMask@ is not @0@, multiview is enabled.
---
--- If there is an instance of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
--- included in the @pNext@ chain and its @deviceCount@ member is not @0@,
--- then @renderArea@ is ignored, and the render area is defined per-device
--- by that structure.
---
--- Each element of the @pColorAttachments@ array corresponds to an output
--- location in the shader, i.e. if the shader declares an output variable
--- decorated with a @Location@ value of __X__, then it uses the attachment
--- provided in @pColorAttachments@[__X__]. If the @imageView@ member of any
--- element of @pColorAttachments@ is
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', writes to the corresponding
--- location by a fragment are discarded.
---
--- == Valid Usage
---
--- -   #VUID-VkRenderingInfoKHR-viewMask-06069# If @viewMask@ is @0@,
---     @layerCount@ /must/ not be @0@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06070# If neither the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
---     nor the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
---     extensions are enabled, @imageView@ members of @pDepthAttachment@,
---     @pStencilAttachment@, and elements of @pColorAttachments@ that are
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been
---     created with the same @sampleCount@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06077# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0,
---     @renderArea.offset.x@ /must/ be greater than or equal to 0
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06078# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0,
---     @renderArea.offset.y@ /must/ be greater than or equal to 0
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06079# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0, the width of
---     the @imageView@ member of any element of @pColorAttachments@,
---     @pDepthAttachment@, or @pStencilAttachment@ that is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or
---     equal to @renderArea.offset.x@ + @renderArea.extent.width@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06080# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0, the height of
---     the @imageView@ member of any element of @pColorAttachments@,
---     @pDepthAttachment@, or @pStencilAttachment@ that is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be greater than or
---     equal to @renderArea.offset.y@ + @renderArea.extent.height@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06083# If the @pNext@ chain contains
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
---     the width of the @imageView@ member of any element of
---     @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@
---     that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be
---     greater than or equal to the sum of the @offset.x@ and
---     @extent.width@ members of each element of @pDeviceRenderAreas@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06084# If the @pNext@ chain contains
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
---     the height of the @imageView@ member of any element of
---     @pColorAttachments@, @pDepthAttachment@, or @pStencilAttachment@
---     that is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ be
---     greater than or equal to the sum of the @offset.y@ and
---     @extent.height@ members of each element of @pDeviceRenderAreas@
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06085# If neither
---     @pDepthAttachment@ or @pStencilAttachment@ are @NULL@ and the
---     @imageView@ member of either structure is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @imageView@ member of
---     each structure /must/ be the same
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06086# If neither
---     @pDepthAttachment@ or @pStencilAttachment@ are @NULL@, and the
---     @resolveMode@ member of each is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the
---     @resolveImageView@ member of each structure /must/ be the same
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06087# If
---     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
---     element of @pColorAttachments@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', that @imageView@ /must/
---     have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06088# If
---     @pDepthAttachment@ is not @NULL@ and @pDepthAttachment->imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pDepthAttachment->imageView@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06089# If
---     @pStencilAttachment@ is not @NULL@ and
---     @pStencilAttachment->imageView@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pStencilAttachment->imageView@ /must/ have been created with a
---     stencil usage including
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06090# If
---     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
---     element of @pColorAttachments@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of
---     that element of @pColorAttachments@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06091# If
---     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
---     element of @pColorAttachments@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@
---     member of that element of @pColorAttachments@ is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its
---     @resolveImageLayout@ member /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06092# If
---     @pDepthAttachment@ is not @NULL@ and @pDepthAttachment->imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pDepthAttachment->layout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06093# If
---     @pDepthAttachment@ is not @NULL@, @pDepthAttachment->imageView@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     @pDepthAttachment->resolveMode@ is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @pDepthAttachment->resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06094# If
---     @pStencilAttachment@ is not @NULL@ and
---     @pStencilAttachment->imageView@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pStencilAttachment->layout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06095# If
---     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     @pStencilAttachment->resolveMode@ is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @pStencilAttachment->resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06096# If
---     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
---     element of @pColorAttachments@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of
---     that element of @pColorAttachments@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06097# If
---     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
---     element of @pColorAttachments@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@
---     member of that element of @pColorAttachments@ is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its
---     @resolveImageLayout@ member /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06098# If
---     @pDepthAttachment@ is not @NULL@, @pDepthAttachment->imageView@ is
---     not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     @pDepthAttachment->resolveMode@ is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @pDepthAttachment->resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06099# If
---     @pStencilAttachment@ is not @NULL@, @pStencilAttachment->imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     @pStencilAttachment->resolveMode@ is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @pStencilAttachment->resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06100# If
---     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
---     element of @pColorAttachments@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', the @layout@ member of
---     that element of @pColorAttachments@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06101# If
---     @colorAttachmentCount@ is not @0@ and the @imageView@ member of an
---     element of @pColorAttachments@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', if the @resolveMode@
---     member of that element of @pColorAttachments@ is not
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', its
---     @resolveImageLayout@ member /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL',
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06102# If
---     @pDepthAttachment@ is not @NULL@ and @pDepthAttachment->imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pDepthAttachment->resolveMode@ /must/ be one of the bits set in
---     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedDepthResolveModes@
---
--- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-06103# If
---     @pStencilAttachment@ is not @NULL@ and
---     @pStencilAttachment->imageView@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @pStencilAttachment->resolveMode@ /must/ be one of the bits set in
---     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@supportedStencilResolveModes@
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06104# If
---     @pDepthAttachment@ or @pStencilAttachment@ are both not @NULL@,
---     @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@
---     are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolveNone@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', the @resolveMode@ of both
---     structures /must/ be the same value
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-06105# If
---     @pDepthAttachment@ or @pStencilAttachment@ are both not @NULL@,
---     @pDepthAttachment->imageView@ and @pStencilAttachment->imageView@
---     are both not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     'Vulkan.Core12.Promoted_From_VK_KHR_depth_stencil_resolve.PhysicalDeviceDepthStencilResolveProperties'::@independentResolve@
---     is 'Vulkan.Core10.FundamentalTypes.FALSE', and the @resolveMode@ of
---     neither structure is
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', the
---     @resolveMode@ of both structures /must/ be the same value
---
--- -   #VUID-VkRenderingInfoKHR-colorAttachmentCount-06106#
---     @colorAttachmentCount@ /must/ be less than or equal to
---     'Vulkan.Core10.DeviceInitialization.PhysicalDeviceLimits'::@maxColorAttachments@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06107# If the @imageView@ member
---     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapNonSubsampledImages non-subsample image feature>
---     is not enabled, valid @imageView@ and @resolveImageView@ members of
---     @pDepthAttachment@, @pStencilAttachment@, and each element of
---     @pColorAttachments@ /must/ be a 'Vulkan.Core10.Handles.ImageView'
---     created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06108# If the @imageView@ member
---     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@,
---     @imageView@ /must/ have a @layerCount@ greater than or equal to the
---     index of the most significant bit in @viewMask@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06109# If the @imageView@ member
---     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@,
---     @imageView@ /must/ have a @layerCount@ equal to @1@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06112# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0 and the
---     @imageView@ member of a
---     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in
---     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @imageView@ /must/ have a width greater than or equal to
---     \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\)
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06113# If the @pNext@ chain contains
---     a
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     structure, its @deviceRenderAreaCount@ member is not 0, and the
---     @imageView@ member of a
---     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in
---     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @imageView@ /must/ have a width greater than or equal to
---     \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\right\rceil\)
---     for each element of @pDeviceRenderAreas@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06114# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0 and the
---     @imageView@ member of a
---     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in
---     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @imageView@ /must/ have a height greater than or equal to
---     \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\)
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06115# If the @pNext@ chain contains
---     a
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     structure, its @deviceRenderAreaCount@ member is not 0, and the
---     @imageView@ member of a
---     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in
---     the @pNext@ chain is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @imageView@ /must/ have a height greater than or equal to
---     \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{maxFragmentDensityTexelSize_{height}}}\right\rceil\)
---     for each element of @pDeviceRenderAreas@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06116# If the @imageView@ member
---     of a 'RenderingFragmentDensityMapAttachmentInfoEXT' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to
---     the @imageView@ or @resolveImageView@ member of @pDepthAttachment@,
---     @pStencilAttachment@, or any element of @pColorAttachments@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06119# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0 and the
---     @imageView@ member of a
---     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included
---     in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
---     width greater than or equal to
---     \(\left\lceil{\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\)
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06120# If the @pNext@ chain contains
---     a
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     structure, its @deviceRenderAreaCount@ member is not 0, and the
---     @imageView@ member of a
---     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included
---     in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
---     width greater than or equal to
---     \(\left\lceil{\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\right\rceil\)
---     for each element of @pDeviceRenderAreas@
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06121# If the @pNext@ chain does not
---     contain
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     or its @deviceRenderAreaCount@ member is equal to 0 and the
---     @imageView@ member of a
---     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included
---     in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
---     height greater than or equal to
---     \(\left\lceil{\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)
---
--- -   #VUID-VkRenderingInfoKHR-pNext-06122# If the @pNext@ chain contains
---     a
---     'Vulkan.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo'
---     structure, its @deviceRenderAreaCount@ member is not 0, and the
---     @imageView@ member of a
---     'RenderingFragmentShadingRateAttachmentInfoKHR' structure included
---     in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @imageView@ /must/ have a
---     height greater than or equal to
---     \(\left\lceil{\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\right\rceil\)
---     for each element of @pDeviceRenderAreas@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06123# If the @imageView@ member
---     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is @0@,
---     @imageView@ /must/ have a @layerCount@ that is either equal to @1@
---     or greater than or equal to @layerCount@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06124# If the @imageView@ member
---     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', and @viewMask@ is not @0@,
---     @imageView@ /must/ have a @layerCount@ that either equal to @1@ or
---     greater than or equal to the index of the most significant bit in
---     @viewMask@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06125# If the @imageView@ member
---     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to
---     the @imageView@ or @resolveImageView@ member of @pDepthAttachment@,
---     @pStencilAttachment@, or any element of @pColorAttachments@
---
--- -   #VUID-VkRenderingInfoKHR-imageView-06126# If the @imageView@ member
---     of a 'RenderingFragmentShadingRateAttachmentInfoKHR' structure
---     included in the @pNext@ chain is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', it /must/ not be equal to
---     the @imageView@ member of a
---     'RenderingFragmentDensityMapAttachmentInfoEXT' structure included in
---     the @pNext@ chain
---
--- -   #VUID-VkRenderingInfoKHR-multiview-06127# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>
---     feature is not enabled, @viewMask@ /must/ be @0@
---
--- -   #VUID-VkRenderingInfoKHR-viewMask-06128# The index of the most
---     significant bit in @viewMask@ /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRenderingInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO_KHR'
---
--- -   #VUID-VkRenderingInfoKHR-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.Core11.Promoted_From_VK_KHR_device_group.DeviceGroupRenderPassBeginInfo',
---     'MultiviewPerViewAttributesInfoNVX',
---     'RenderingFragmentDensityMapAttachmentInfoEXT', or
---     'RenderingFragmentShadingRateAttachmentInfoKHR'
---
--- -   #VUID-VkRenderingInfoKHR-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkRenderingInfoKHR-flags-parameter# @flags@ /must/ be a valid
---     combination of 'RenderingFlagBitsKHR' values
---
--- -   #VUID-VkRenderingInfoKHR-pColorAttachments-parameter# If
---     @colorAttachmentCount@ is not @0@, @pColorAttachments@ /must/ be a
---     valid pointer to an array of @colorAttachmentCount@ valid
---     'RenderingAttachmentInfoKHR' structures
---
--- -   #VUID-VkRenderingInfoKHR-pDepthAttachment-parameter# If
---     @pDepthAttachment@ is not @NULL@, @pDepthAttachment@ /must/ be a
---     valid pointer to a valid 'RenderingAttachmentInfoKHR' structure
---
--- -   #VUID-VkRenderingInfoKHR-pStencilAttachment-parameter# If
---     @pStencilAttachment@ is not @NULL@, @pStencilAttachment@ /must/ be a
---     valid pointer to a valid 'RenderingAttachmentInfoKHR' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.FundamentalTypes.Rect2D', 'RenderingAttachmentInfoKHR',
--- 'RenderingFlagsKHR', 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdBeginRenderingKHR'
-data RenderingInfoKHR (es :: [Type]) = RenderingInfoKHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of 'RenderingFlagBitsKHR'.
-    flags :: RenderingFlagsKHR
-  , -- | @renderArea@ is the render area that is affected by the render pass
-    -- instance.
-    renderArea :: Rect2D
-  , -- | @layerCount@ is the number of layers rendered to in each attachment when
-    -- @viewMask@ is @0@.
-    layerCount :: Word32
-  , -- | @viewMask@ is the view mask indicating the indices of attachment layers
-    -- that will be rendered when it is not @0@.
-    viewMask :: Word32
-  , -- | @pColorAttachments@ is a pointer to an array of @colorAttachmentCount@
-    -- 'RenderingAttachmentInfoKHR' structures describing any color attachments
-    -- used.
-    colorAttachments :: Vector RenderingAttachmentInfoKHR
-  , -- | @pDepthAttachment@ is a pointer to a 'RenderingAttachmentInfoKHR'
-    -- structure describing a depth attachment.
-    depthAttachment :: Maybe RenderingAttachmentInfoKHR
-  , -- | @pStencilAttachment@ is a pointer to a 'RenderingAttachmentInfoKHR'
-    -- structure describing a stencil attachment.
-    stencilAttachment :: Maybe RenderingAttachmentInfoKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingInfoKHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (RenderingInfoKHR es)
-
-instance Extensible RenderingInfoKHR where
-  extensibleTypeName = "RenderingInfoKHR"
-  setNext RenderingInfoKHR{..} next' = RenderingInfoKHR{next = next', ..}
-  getNext RenderingInfoKHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends RenderingInfoKHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @MultiviewPerViewAttributesInfoNVX = Just f
-    | Just Refl <- eqT @e @RenderingFragmentDensityMapAttachmentInfoEXT = Just f
-    | Just Refl <- eqT @e @RenderingFragmentShadingRateAttachmentInfoKHR = Just f
-    | Just Refl <- eqT @e @DeviceGroupRenderPassBeginInfo = Just f
-    | otherwise = Nothing
-
-instance (Extendss RenderingInfoKHR es, PokeChain es) => ToCStruct (RenderingInfoKHR es) where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderingInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INFO_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr RenderingFlagsKHR)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (renderArea)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (layerCount)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (viewMask)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachments)) :: Word32))
-    pPColorAttachments' <- ContT $ allocaBytes @RenderingAttachmentInfoKHR ((Data.Vector.length (colorAttachments)) * 72)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPColorAttachments' `plusPtr` (72 * (i)) :: Ptr RenderingAttachmentInfoKHR) (e) . ($ ())) (colorAttachments)
-    lift $ poke ((p `plusPtr` 48 :: Ptr (Ptr RenderingAttachmentInfoKHR))) (pPColorAttachments')
-    pDepthAttachment'' <- case (depthAttachment) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr RenderingAttachmentInfoKHR))) pDepthAttachment''
-    pStencilAttachment'' <- case (stencilAttachment) of
-      Nothing -> pure nullPtr
-      Just j -> ContT $ withCStruct (j)
-    lift $ poke ((p `plusPtr` 64 :: Ptr (Ptr RenderingAttachmentInfoKHR))) pStencilAttachment''
-    lift $ f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_INFO_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 20 :: Ptr Rect2D)) (zero)
-    lift $ poke ((p `plusPtr` 36 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    lift $ f
-
-instance es ~ '[] => Zero (RenderingInfoKHR es) where
-  zero = RenderingInfoKHR
-           ()
-           zero
-           zero
-           zero
-           zero
-           mempty
-           Nothing
-           Nothing
-
-
--- | VkRenderingAttachmentInfoKHR - Structure specifying attachment
--- information
---
--- = Description
---
--- Values in @imageView@ are loaded and stored according to the values of
--- @loadOp@ and @storeOp@, within the render area for each device specified
--- in 'RenderingInfoKHR'. If @imageView@ is
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE', other members of this
--- structure are ignored; writes to this attachment will be discarded, and
--- no load, store, or resolve operations will be performed.
---
--- If @resolveMode@ is
--- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', then
--- @resolveImageView@ is ignored. If @resolveMode@ is not
--- 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE', values in
--- @resolveImageView@ within the render area become undefined once
--- rendering begins. At the end of rendering, the color values written to
--- each pixel location in @imageView@ will be resolved according to
--- @resolveMode@ and stored into the the same location in
--- @resolveImageView@.
---
--- Note
---
--- The resolve mode and store operation are independent; it is valid to
--- write both resolved and unresolved values, and equally valid to discard
--- the unresolved values while writing the resolved ones.
---
--- Store and resolve operations are only performed at the end of a render
--- pass instance that does not specify the 'RENDERING_SUSPENDING_BIT_KHR'
--- flag.
---
--- Load operations are only performed at the beginning of a render pass
--- instance that does not specify the 'RENDERING_RESUMING_BIT_KHR' flag.
---
--- Image contents at the end of a suspended render pass instance remain
--- defined for access by a resuming render pass instance.
---
--- == Valid Usage
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06129# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has a
---     non-integer color format, @resolveMode@ /must/ be
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_AVERAGE_BIT'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06130# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and has an integer
---     color format, @resolveMode@ /must/ be
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE' or
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_SAMPLE_ZERO_BIT'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06132# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @imageView@ /must/ not have a sample count of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06133# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageView@ /must/ have a sample count of
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_1_BIT'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06134# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @imageView@ and @resolveImageView@ /must/ have the same
---     'Vulkan.Core10.Enums.Format.Format'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06135# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not
---     be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06136# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL',
---     or 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06137# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
---     or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06138# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not
---     be
---     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06139# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageLayout@ /must/ not be
---     'Vulkan.Extensions.VK_NV_shading_rate_image.IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06140# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not
---     be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06141# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06142# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06143# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not
---     be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06144# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06145# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', @layout@ /must/ not
---     be 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-06146# If @imageView@
---     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE' and @resolveMode@ is
---     not 'Vulkan.Core12.Enums.ResolveModeFlagBits.RESOLVE_MODE_NONE',
---     @resolveImageLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PRESENT_SRC_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageView-parameter# If
---     @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'
---     handle
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-imageLayout-parameter#
---     @imageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-resolveMode-parameter# If
---     @resolveMode@ is not @0@, @resolveMode@ /must/ be a valid
---     'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-resolveImageView-parameter# If
---     @resolveImageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @resolveImageView@ /must/ be a valid
---     'Vulkan.Core10.Handles.ImageView' handle
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-resolveImageLayout-parameter#
---     @resolveImageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-loadOp-parameter# @loadOp@ /must/
---     be a valid 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'
---     value
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-storeOp-parameter# @storeOp@
---     /must/ be a valid
---     'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp' value
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-clearValue-parameter#
---     @clearValue@ /must/ be a valid
---     'Vulkan.Core10.CommandBufferBuilding.ClearValue' union
---
--- -   #VUID-VkRenderingAttachmentInfoKHR-commonparent# Both of
---     @imageView@, and @resolveImageView@ 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_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp',
--- 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp',
--- 'Vulkan.Core10.CommandBufferBuilding.ClearValue',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Handles.ImageView', 'RenderingInfoKHR',
--- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data RenderingAttachmentInfoKHR = RenderingAttachmentInfoKHR
-  { -- | @imageView@ is the image view that will be used for rendering.
-    imageView :: ImageView
-  , -- | @imageLayout@ is the layout that @imageView@ will be in during
-    -- rendering.
-    imageLayout :: ImageLayout
-  , -- | @resolveMode@ is a
-    -- 'Vulkan.Core12.Enums.ResolveModeFlagBits.ResolveModeFlagBits' value
-    -- defining how multisampled data written to @imageView@ will be resolved.
-    resolveMode :: ResolveModeFlagBits
-  , -- | @resolveImageView@ is an image view used to write resolved multisample
-    -- data at the end of rendering.
-    resolveImageView :: ImageView
-  , -- | @resolveImageLayout@ is the layout that @resolveImageView@ will be in
-    -- during rendering.
-    resolveImageLayout :: ImageLayout
-  , -- | @loadOp@ is a 'Vulkan.Core10.Enums.AttachmentLoadOp.AttachmentLoadOp'
-    -- value specifying how the contents of @imageView@ are treated at the
-    -- start of the render pass instance.
-    loadOp :: AttachmentLoadOp
-  , -- | @storeOp@ is a 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp'
-    -- value specifying how the contents of @imageView@ are treated at the end
-    -- of the render pass instance.
-    storeOp :: AttachmentStoreOp
-  , -- | @clearValue@ is a 'Vulkan.Core10.CommandBufferBuilding.ClearValue'
-    -- structure defining values used to clear @imageView@ when @loadOp@ is
-    -- 'Vulkan.Core10.Enums.AttachmentLoadOp.ATTACHMENT_LOAD_OP_CLEAR'.
-    clearValue :: ClearValue
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingAttachmentInfoKHR)
-#endif
-deriving instance Show RenderingAttachmentInfoKHR
-
-instance ToCStruct RenderingAttachmentInfoKHR where
-  withCStruct x f = allocaBytes 72 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderingAttachmentInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)
-    lift $ poke ((p `plusPtr` 28 :: Ptr ResolveModeFlagBits)) (resolveMode)
-    lift $ poke ((p `plusPtr` 32 :: Ptr ImageView)) (resolveImageView)
-    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (resolveImageLayout)
-    lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (loadOp)
-    lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (storeOp)
-    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (clearValue) . ($ ())
-    lift $ f
-  cStructSize = 72
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 40 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 44 :: Ptr AttachmentLoadOp)) (zero)
-    lift $ poke ((p `plusPtr` 48 :: Ptr AttachmentStoreOp)) (zero)
-    ContT $ pokeCStruct ((p `plusPtr` 52 :: Ptr ClearValue)) (zero) . ($ ())
-    lift $ f
-
-instance Zero RenderingAttachmentInfoKHR where
-  zero = RenderingAttachmentInfoKHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkRenderingFragmentShadingRateAttachmentInfoKHR - Structure specifying
--- fragment shading rate attachment information
---
--- = Description
---
--- This structure can be included in the @pNext@ chain of
--- 'RenderingInfoKHR' to define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
--- If @imageView@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or if this
--- structure is not specified, the implementation behaves as if a valid
--- shading rate attachment was specified with all texels specifying a
--- single pixel per fragment.
---
--- == Valid Usage
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06147#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @layout@ /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06148#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
---     /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06149#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @shadingRateAttachmentTexelSize.width@ /must/ be a power of two
---     value
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06150#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
---     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06151#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @shadingRateAttachmentTexelSize.width@ /must/ be greater than or
---     equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06152#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @shadingRateAttachmentTexelSize.height@ /must/ be a power of two
---     value
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06153#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
---     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06154#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @shadingRateAttachmentTexelSize.height@ /must/ be greater than or
---     equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06155#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
---     quotient of @shadingRateAttachmentTexelSize.width@ and
---     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
---     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06156#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
---     quotient of @shadingRateAttachmentTexelSize.height@ and
---     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
---     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-parameter#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'
---     handle
---
--- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageLayout-parameter#
---     @imageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
--- 'Vulkan.Core10.FundamentalTypes.Extent2D',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Handles.ImageView',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data RenderingFragmentShadingRateAttachmentInfoKHR = RenderingFragmentShadingRateAttachmentInfoKHR
-  { -- | @imageView@ is the image view that will be used as a fragment shading
-    -- rate attachment.
-    imageView :: ImageView
-  , -- | @imageLayout@ is the layout that @imageView@ will be in during
-    -- rendering.
-    imageLayout :: ImageLayout
-  , -- | @shadingRateAttachmentTexelSize@ specifies the number of pixels
-    -- corresponding to each texel in @imageView@.
-    shadingRateAttachmentTexelSize :: Extent2D
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingFragmentShadingRateAttachmentInfoKHR)
-#endif
-deriving instance Show RenderingFragmentShadingRateAttachmentInfoKHR
-
-instance ToCStruct RenderingFragmentShadingRateAttachmentInfoKHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderingFragmentShadingRateAttachmentInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)
-    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (shadingRateAttachmentTexelSize)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (zero)
-    f
-
-instance FromCStruct RenderingFragmentShadingRateAttachmentInfoKHR where
-  peekCStruct p = do
-    imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))
-    imageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    shadingRateAttachmentTexelSize <- peekCStruct @Extent2D ((p `plusPtr` 28 :: Ptr Extent2D))
-    pure $ RenderingFragmentShadingRateAttachmentInfoKHR
-             imageView imageLayout shadingRateAttachmentTexelSize
-
-instance Storable RenderingFragmentShadingRateAttachmentInfoKHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero RenderingFragmentShadingRateAttachmentInfoKHR where
-  zero = RenderingFragmentShadingRateAttachmentInfoKHR
-           zero
-           zero
-           zero
-
-
--- | VkRenderingFragmentDensityMapAttachmentInfoEXT - Structure specifying
--- fragment shading rate attachment information
---
--- = Description
---
--- This structure can be included in the @pNext@ chain of
--- 'RenderingInfoKHR' to define a fragment density map. If this structure
--- is not included in the @pNext@ chain, @imageView@ is treated as
--- 'Vulkan.Core10.APIConstants.NULL_HANDLE'.
---
--- == Valid Usage
---
--- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06157#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
---     @layout@ /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'
---
--- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06158#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
---     /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
---
--- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06159#
---     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
---     /must/ not have been created with
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'
---
--- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-parameter#
---     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'
---     handle
---
--- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageLayout-parameter#
---     @imageLayout@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.Handles.ImageView',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data RenderingFragmentDensityMapAttachmentInfoEXT = RenderingFragmentDensityMapAttachmentInfoEXT
-  { -- | @imageView@ is the image view that will be used as a fragment shading
-    -- rate attachment.
-    imageView :: ImageView
-  , -- | @imageLayout@ is the layout that @imageView@ will be in during
-    -- rendering.
-    imageLayout :: ImageLayout
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (RenderingFragmentDensityMapAttachmentInfoEXT)
-#endif
-deriving instance Show RenderingFragmentDensityMapAttachmentInfoEXT
-
-instance ToCStruct RenderingFragmentDensityMapAttachmentInfoEXT where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p RenderingFragmentDensityMapAttachmentInfoEXT{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr ImageView)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
-    f
-
-instance FromCStruct RenderingFragmentDensityMapAttachmentInfoEXT where
-  peekCStruct p = do
-    imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))
-    imageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
-    pure $ RenderingFragmentDensityMapAttachmentInfoEXT
-             imageView imageLayout
-
-instance Storable RenderingFragmentDensityMapAttachmentInfoEXT where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero RenderingFragmentDensityMapAttachmentInfoEXT where
-  zero = RenderingFragmentDensityMapAttachmentInfoEXT
-           zero
-           zero
-
-
--- | VkPhysicalDeviceDynamicRenderingFeaturesKHR - Structure indicating
--- support for dynamic render pass instances
---
--- = Members
---
--- The members of the 'PhysicalDeviceDynamicRenderingFeaturesKHR' structure
--- describe the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceDynamicRenderingFeaturesKHR' 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. 'PhysicalDeviceDynamicRenderingFeaturesKHR' /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_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeaturesKHR
-  { -- | #features-dynamicRendering# @dynamicRendering@ specifies that the
-    -- implementation supports dynamic render pass instances using the
-    -- 'cmdBeginRenderingKHR' command.
-    dynamicRendering :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceDynamicRenderingFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceDynamicRenderingFeaturesKHR
-
-instance ToCStruct PhysicalDeviceDynamicRenderingFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceDynamicRenderingFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (dynamicRendering))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceDynamicRenderingFeaturesKHR where
-  peekCStruct p = do
-    dynamicRendering <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceDynamicRenderingFeaturesKHR
-             (bool32ToBool dynamicRendering)
-
-instance Storable PhysicalDeviceDynamicRenderingFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceDynamicRenderingFeaturesKHR where
-  zero = PhysicalDeviceDynamicRenderingFeaturesKHR
-           zero
-
-
--- | VkCommandBufferInheritanceRenderingInfoKHR - Structure specifying
--- command buffer inheritance info for dynamic render pass instances
---
--- = Description
---
--- If the @pNext@ chain of
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes a
--- 'CommandBufferInheritanceRenderingInfoKHR' structure, then that
--- structure controls parameters of dynamic render pass instances that the
--- 'Vulkan.Core10.Handles.CommandBuffer' /can/ be executed within. If
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
--- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', or
--- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
--- is not specified in
--- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@,
--- parameters of this structure are ignored.
---
--- If @colorAttachmentCount@ is @0@ and the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
--- feature is enabled, @rasterizationSamples@ is ignored.
---
--- If @depthAttachmentFormat@, @stencilAttachmentFormat@, or any element of
--- @pColorAttachmentFormats@ is
--- 'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it indicates that the
--- corresponding attachment is unused within the render pass.
---
--- == Valid Usage
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-colorAttachmentCount-06004#
---     If @colorAttachmentCount@ is not @0@, @rasterizationSamples@ /must/
---     be a valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-variableMultisampleRate-06005#
---     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variableMultisampleRate variableMultisampleRate>
---     feature is not enabled, @rasterizationSamples@ /must/ be a valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-06006#
---     If any element of @pColorAttachmentFormats@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_COLOR_ATTACHMENT_BIT'
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-depthAttachmentFormat-06007#
---     If @depthAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-06492#
---     When rendering to a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary Linear Color attachment>,
---     if any element of @pColorAttachmentFormats@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-stencilAttachmentFormat-06199#
---     If @stencilAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED', it /must/ be a format
---     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#potential-format-features potential format features>
---     that include
---     'Vulkan.Core10.Enums.FormatFeatureFlagBits.FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-depthAttachmentFormat-06200#
---     If @depthAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED' and
---     @stencilAttachmentFormat@ is not
---     'Vulkan.Core10.Enums.Format.FORMAT_UNDEFINED',
---     @depthAttachmentFormat@ /must/ equal @stencilAttachmentFormat@
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-multiview-06008# If
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>
---     feature is not enabled, @viewMask@ /must/ be @0@
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-viewMask-06009# The
---     index of the most significant bit in @viewMask@ /must/ be less than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxMultiviewViewCount maxMultiviewViewCount>
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-sType-sType#
---     @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-flags-parameter#
---     @flags@ /must/ be a valid combination of 'RenderingFlagBitsKHR'
---     values
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-parameter#
---     If @colorAttachmentCount@ is not @0@, @pColorAttachmentFormats@
---     /must/ be a valid pointer to an array of @colorAttachmentCount@
---     valid 'Vulkan.Core10.Enums.Format.Format' values
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-depthAttachmentFormat-parameter#
---     @depthAttachmentFormat@ /must/ be a valid
---     'Vulkan.Core10.Enums.Format.Format' value
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-stencilAttachmentFormat-parameter#
---     @stencilAttachmentFormat@ /must/ be a valid
---     'Vulkan.Core10.Enums.Format.Format' value
---
--- -   #VUID-VkCommandBufferInheritanceRenderingInfoKHR-rasterizationSamples-parameter#
---     If @rasterizationSamples@ is not @0@, @rasterizationSamples@ /must/
---     be a valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'Vulkan.Core10.Enums.Format.Format', 'RenderingFlagsKHR',
--- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfoKHR
-  { -- | @flags@ is a bitmask of 'RenderingFlagBitsKHR' used by the render pass
-    -- instance.
-    flags :: RenderingFlagsKHR
-  , -- | @viewMask@ is the view mask used for rendering.
-    viewMask :: Word32
-  , -- | @pColorAttachmentFormats@ is a pointer to an array of
-    -- 'Vulkan.Core10.Enums.Format.Format' values defining the format of color
-    -- attachments.
-    colorAttachmentFormats :: Vector Format
-  , -- | @depthAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
-    -- defining the format of the depth attachment.
-    depthAttachmentFormat :: Format
-  , -- | @stencilAttachmentFormat@ is a 'Vulkan.Core10.Enums.Format.Format' value
-    -- defining the format of the stencil attachment.
-    stencilAttachmentFormat :: Format
-  , -- | @rasterizationSamples@ is a
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' specifying
-    -- the number of samples used in rasterization.
-    rasterizationSamples :: SampleCountFlagBits
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CommandBufferInheritanceRenderingInfoKHR)
-#endif
-deriving instance Show CommandBufferInheritanceRenderingInfoKHR
-
-instance ToCStruct CommandBufferInheritanceRenderingInfoKHR where
-  withCStruct x f = allocaBytes 56 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CommandBufferInheritanceRenderingInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr RenderingFlagsKHR)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) (viewMask)
-    lift $ poke ((p `plusPtr` 24 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentFormats)) :: Word32))
-    pPColorAttachmentFormats' <- ContT $ allocaBytes @Format ((Data.Vector.length (colorAttachmentFormats)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentFormats' `plusPtr` (4 * (i)) :: Ptr Format) (e)) (colorAttachmentFormats)
-    lift $ poke ((p `plusPtr` 32 :: Ptr (Ptr Format))) (pPColorAttachmentFormats')
-    lift $ poke ((p `plusPtr` 40 :: Ptr Format)) (depthAttachmentFormat)
-    lift $ poke ((p `plusPtr` 44 :: Ptr Format)) (stencilAttachmentFormat)
-    lift $ poke ((p `plusPtr` 48 :: Ptr SampleCountFlagBits)) (rasterizationSamples)
-    lift $ f
-  cStructSize = 56
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 20 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Format)) (zero)
-    poke ((p `plusPtr` 44 :: Ptr Format)) (zero)
-    f
-
-instance FromCStruct CommandBufferInheritanceRenderingInfoKHR where
-  peekCStruct p = do
-    flags <- peek @RenderingFlagsKHR ((p `plusPtr` 16 :: Ptr RenderingFlagsKHR))
-    viewMask <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pColorAttachmentFormats <- peek @(Ptr Format) ((p `plusPtr` 32 :: Ptr (Ptr Format)))
-    pColorAttachmentFormats' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @Format ((pColorAttachmentFormats `advancePtrBytes` (4 * (i)) :: Ptr Format)))
-    depthAttachmentFormat <- peek @Format ((p `plusPtr` 40 :: Ptr Format))
-    stencilAttachmentFormat <- peek @Format ((p `plusPtr` 44 :: Ptr Format))
-    rasterizationSamples <- peek @SampleCountFlagBits ((p `plusPtr` 48 :: Ptr SampleCountFlagBits))
-    pure $ CommandBufferInheritanceRenderingInfoKHR
-             flags viewMask pColorAttachmentFormats' depthAttachmentFormat stencilAttachmentFormat rasterizationSamples
-
-instance Zero CommandBufferInheritanceRenderingInfoKHR where
-  zero = CommandBufferInheritanceRenderingInfoKHR
-           zero
-           zero
-           mempty
-           zero
-           zero
-           zero
-
-
--- | VkAttachmentSampleCountInfoAMD - Structure specifying command buffer
--- inheritance info for dynamic render pass instances
---
--- = Description
---
--- If
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
--- is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
--- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
--- is specified in
--- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@, and the
--- @pNext@ chain of
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
--- 'AttachmentSampleCountInfoAMD', then this structure defines the sample
--- counts of each attachment within the render pass instance. If
--- 'AttachmentSampleCountInfoAMD' is not included, the value of
--- 'CommandBufferInheritanceRenderingInfoKHR'::@rasterizationSamples@ is
--- used as the sample count for each attachment. If
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
--- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', or
--- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
--- is not specified in
--- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@,
--- parameters of this structure are ignored.
---
--- 'AttachmentSampleCountInfoAMD' /can/ also be included in the @pNext@
--- chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'. When a
--- graphics pipeline is created without a
--- 'Vulkan.Core10.Handles.RenderPass', if this structure is present in the
--- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
--- specifies the sample count of attachments used for rendering. If this
--- structure is not specified, and the pipeline does not include a
--- 'Vulkan.Core10.Handles.RenderPass', the value of
--- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
--- is used as the sample count for each attachment. If a graphics pipeline
--- is created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters
--- of this structure are ignored.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkAttachmentSampleCountInfoAMD-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'
---
--- -   #VUID-VkAttachmentSampleCountInfoAMD-pColorAttachmentSamples-parameter#
---     @pColorAttachmentSamples@ /must/ be a valid pointer to an array of
---     @colorAttachmentCount@ valid or
---     'Vulkan.Core10.APIConstants.NULL_HANDLE'
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values
---
--- -   #VUID-VkAttachmentSampleCountInfoAMD-depthStencilAttachmentSamples-parameter#
---     If @depthStencilAttachmentSamples@ is not @0@,
---     @depthStencilAttachmentSamples@ /must/ be a valid
---     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
---
--- -   #VUID-VkAttachmentSampleCountInfoAMD-colorAttachmentCount-arraylength#
---     @colorAttachmentCount@ /must/ be greater than @0@
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>,
--- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data AttachmentSampleCountInfoAMD = AttachmentSampleCountInfoAMD
-  { -- | @pColorAttachmentSamples@ is a pointer to an array of
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values
-    -- defining the sample count of color attachments.
-    colorAttachmentSamples :: Vector SampleCountFlagBits
-  , -- | @depthStencilAttachmentSamples@ is a
-    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
-    -- defining the sample count of a depth\/stencil attachment.
-    depthStencilAttachmentSamples :: SampleCountFlagBits
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (AttachmentSampleCountInfoAMD)
-#endif
-deriving instance Show AttachmentSampleCountInfoAMD
-
-instance ToCStruct AttachmentSampleCountInfoAMD where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p AttachmentSampleCountInfoAMD{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentSamples)) :: Word32))
-    pPColorAttachmentSamples' <- ContT $ allocaBytes @SampleCountFlagBits ((Data.Vector.length (colorAttachmentSamples)) * 4)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentSamples' `plusPtr` (4 * (i)) :: Ptr SampleCountFlagBits) (e)) (colorAttachmentSamples)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr SampleCountFlagBits))) (pPColorAttachmentSamples')
-    lift $ poke ((p `plusPtr` 32 :: Ptr SampleCountFlagBits)) (depthStencilAttachmentSamples)
-    lift $ f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct AttachmentSampleCountInfoAMD where
-  peekCStruct p = do
-    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
-    pColorAttachmentSamples <- peek @(Ptr SampleCountFlagBits) ((p `plusPtr` 24 :: Ptr (Ptr SampleCountFlagBits)))
-    pColorAttachmentSamples' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @SampleCountFlagBits ((pColorAttachmentSamples `advancePtrBytes` (4 * (i)) :: Ptr SampleCountFlagBits)))
-    depthStencilAttachmentSamples <- peek @SampleCountFlagBits ((p `plusPtr` 32 :: Ptr SampleCountFlagBits))
-    pure $ AttachmentSampleCountInfoAMD
-             pColorAttachmentSamples' depthStencilAttachmentSamples
-
-instance Zero AttachmentSampleCountInfoAMD where
-  zero = AttachmentSampleCountInfoAMD
-           mempty
-           zero
-
-
--- | VkMultiviewPerViewAttributesInfoNVX - Structure specifying the multiview
--- per-attribute properties
---
--- = Description
---
--- When dynamic render pass instances are being used, instead of specifying
--- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'
--- or
--- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX'
--- in the subpass description flags, the per-attibute properties of the
--- render pass instance /must/ be specified by the
--- 'MultiviewPerViewAttributesInfoNVX' structure Include the
--- 'MultiviewPerViewAttributesInfoNVX' structure in the @pNext@ chain of
--- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' when creating a
--- graphics pipeline for dynamic rendering, 'RenderingInfoKHR' when
--- starting a dynamic render pass instance, and
--- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' when
--- specifying the dynamic render pass instance parameters for secondary
--- command buffers.
---
--- == Valid Usage
---
--- -   #VUID-VkMultiviewPerViewAttributesInfoNVX-perViewAttributesPositionXOnly-06163#
---     If @perViewAttributesPositionXOnly@ is
---     'Vulkan.Core10.FundamentalTypes.TRUE' then @perViewAttributes@
---     /must/ also be 'Vulkan.Core10.FundamentalTypes.TRUE'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMultiviewPerViewAttributesInfoNVX-sType-sType# @sType@
---     /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data MultiviewPerViewAttributesInfoNVX = MultiviewPerViewAttributesInfoNVX
-  { -- | @perViewAttributes@ specifies that shaders compiled for this pipeline
-    -- write the attributes for all views in a single invocation of each vertex
-    -- processing stage. All pipelines executed within a render pass instance
-    -- that includes this bit /must/ write per-view attributes to the
-    -- @*PerViewNV[]@ shader outputs, in addition to the non-per-view (e.g.
-    -- @Position@) outputs.
-    perViewAttributes :: Bool
-  , -- | @perViewAttributesPositionXOnly@ specifies that shaders compiled for
-    -- this pipeline use per-view positions which only differ in value in the x
-    -- component. Per-view viewport mask /can/ also be used.
-    perViewAttributesPositionXOnly :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MultiviewPerViewAttributesInfoNVX)
-#endif
-deriving instance Show MultiviewPerViewAttributesInfoNVX
-
-instance ToCStruct MultiviewPerViewAttributesInfoNVX where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MultiviewPerViewAttributesInfoNVX{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (perViewAttributes))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (perViewAttributesPositionXOnly))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct MultiviewPerViewAttributesInfoNVX where
-  peekCStruct p = do
-    perViewAttributes <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    perViewAttributesPositionXOnly <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    pure $ MultiviewPerViewAttributesInfoNVX
-             (bool32ToBool perViewAttributes) (bool32ToBool perViewAttributesPositionXOnly)
-
-instance Storable MultiviewPerViewAttributesInfoNVX where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MultiviewPerViewAttributesInfoNVX where
-  zero = MultiviewPerViewAttributesInfoNVX
-           zero
-           zero
-
-
-type RenderingFlagsKHR = RenderingFlagBitsKHR
-
--- | VkRenderingFlagBitsKHR - Bitmask specifying additional properties of a
--- dynamic render pass instance
---
--- = Description
---
--- The contents of @pRenderingInfo@ /must/ match between suspended render
--- pass instances and the render pass instances that resume them, other
--- than the presence or absence of the 'RENDERING_RESUMING_BIT_KHR',
--- 'RENDERING_SUSPENDING_BIT_KHR', and
--- 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR' flags. No action
--- or synchronization commands, or other render pass instances, are allowed
--- between suspending and resuming render pass instances.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
--- 'RenderingFlagsKHR'
-newtype RenderingFlagBitsKHR = RenderingFlagBitsKHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR' specifies that
--- draw calls for the render pass instance will be recorded in secondary
--- command buffers.
-pattern RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = RenderingFlagBitsKHR 0x00000001
--- | 'RENDERING_SUSPENDING_BIT_KHR' specifies that the render pass instance
--- will be suspended.
-pattern RENDERING_SUSPENDING_BIT_KHR                         = RenderingFlagBitsKHR 0x00000002
--- | 'RENDERING_RESUMING_BIT_KHR' specifies that the render pass instance is
--- resuming an earlier suspended render pass instance.
-pattern RENDERING_RESUMING_BIT_KHR                           = RenderingFlagBitsKHR 0x00000004
-
-conNameRenderingFlagBitsKHR :: String
-conNameRenderingFlagBitsKHR = "RenderingFlagBitsKHR"
-
-enumPrefixRenderingFlagBitsKHR :: String
-enumPrefixRenderingFlagBitsKHR = "RENDERING_"
-
-showTableRenderingFlagBitsKHR :: [(RenderingFlagBitsKHR, String)]
-showTableRenderingFlagBitsKHR =
-  [ (RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR, "CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR")
-  , (RENDERING_SUSPENDING_BIT_KHR                        , "SUSPENDING_BIT_KHR")
-  , (RENDERING_RESUMING_BIT_KHR                          , "RESUMING_BIT_KHR")
-  ]
-
-instance Show RenderingFlagBitsKHR where
-  showsPrec = enumShowsPrec enumPrefixRenderingFlagBitsKHR
-                            showTableRenderingFlagBitsKHR
-                            conNameRenderingFlagBitsKHR
-                            (\(RenderingFlagBitsKHR x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read RenderingFlagBitsKHR where
-  readPrec = enumReadPrec enumPrefixRenderingFlagBitsKHR
-                          showTableRenderingFlagBitsKHR
-                          conNameRenderingFlagBitsKHR
-                          RenderingFlagBitsKHR
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_dynamic_rendering] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_dynamic_rendering extension>> >
+--
+-- [__Extension Proposal__]
+--     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_dynamic_rendering.asciidoc VK_KHR_dynamic_rendering>
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-10-06
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Arseny Kapoulkine, Roblox
+--
+--     -   François Duranleau, Gameloft
+--
+--     -   Stuart Smith, AMD
+--
+--     -   Hai Nguyen, Google
+--
+--     -   Jean-François Roy, Google
+--
+--     -   Jeff Leger, Qualcomm
+--
+--     -   Jan-Harald Fredriksen, Arm
+--
+--     -   Piers Daniell, Nvidia
+--
+--     -   James Fitzpatrick, Imagination
+--
+--     -   Piotr Byszewski, Mobica
+--
+--     -   Jesse Hall, Google
+--
+--     -   Mike Blumenkrantz, Valve
+--
+-- == Description
+--
+-- This extension allows applications to create single-pass render pass
+-- instances without needing to create render pass objects or framebuffers.
+-- Dynamic render passes can also span across multiple primary command
+-- buffers, rather than relying on secondary command buffers.
+--
+-- This extension also incorporates 'ATTACHMENT_STORE_OP_NONE_KHR' from
+-- <VK_QCOM_render_pass_store_ops.html VK_QCOM_render_pass_store_ops>,
+-- enabling applications to avoid unnecessary synchronization when an
+-- attachment is not written during a render pass.
+--
+-- == New Commands
+--
+-- -   'cmdBeginRenderingKHR'
+--
+-- -   'cmdEndRenderingKHR'
+--
+-- == New Structures
+--
+-- -   'RenderingAttachmentInfoKHR'
+--
+-- -   'RenderingInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo':
+--
+--     -   'CommandBufferInheritanceRenderingInfoKHR'
+--
+-- -   Extending 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+--
+--     -   'PipelineRenderingCreateInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceDynamicRenderingFeaturesKHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+--
+--     -   'AttachmentSampleCountInfoAMD'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
+--
+--     -   'RenderingFragmentDensityMapAttachmentInfoEXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
+--
+--     -   'RenderingFragmentShadingRateAttachmentInfoKHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo':
+--
+--     -   'AttachmentSampleCountInfoNV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
+--     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
+--
+--     -   'MultiviewPerViewAttributesInfoNVX'
+--
+-- == New Enums
+--
+-- -   'RenderingFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'RenderingFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_DYNAMIC_RENDERING_EXTENSION_NAME'
+--
+-- -   'KHR_DYNAMIC_RENDERING_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':
+--
+--     -   'ATTACHMENT_STORE_OP_NONE_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR'
+--
+--     -   'STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_RENDERING_INFO_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+--     -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PipelineCreateFlagBits':
+--
+--     -   'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+--     -   'PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'
+--
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-10-06 (Tobias Hector)
+--
+--     -   Initial revision
+--
+-- == See Also
+--
+-- 'CommandBufferInheritanceRenderingInfoKHR',
+-- 'PhysicalDeviceDynamicRenderingFeaturesKHR',
+-- 'PipelineRenderingCreateInfoKHR', 'RenderingAttachmentInfoKHR',
+-- 'RenderingFlagBitsKHR', 'RenderingFlagsKHR', 'RenderingInfoKHR',
+-- 'cmdBeginRenderingKHR', 'cmdEndRenderingKHR'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_KHR_dynamic_rendering  ( pattern STRUCTURE_TYPE_RENDERING_INFO_KHR
+                                                   , pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR
+                                                   , pattern STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR
+                                                   , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR
+                                                   , pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR
+                                                   , pattern ATTACHMENT_STORE_OP_NONE_KHR
+                                                   , pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+                                                   , pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
+                                                   , pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV
+                                                   , cmdBeginRenderingKHR
+                                                   , cmdEndRenderingKHR
+                                                   , RenderingFragmentShadingRateAttachmentInfoKHR(..)
+                                                   , RenderingFragmentDensityMapAttachmentInfoEXT(..)
+                                                   , AttachmentSampleCountInfoAMD(..)
+                                                   , MultiviewPerViewAttributesInfoNVX(..)
+                                                   , RenderingFlagsKHR
+                                                   , RenderingFlagBitsKHR
+                                                   , PipelineRenderingCreateInfoKHR
+                                                   , RenderingInfoKHR
+                                                   , RenderingAttachmentInfoKHR
+                                                   , PhysicalDeviceDynamicRenderingFeaturesKHR
+                                                   , CommandBufferInheritanceRenderingInfoKHR
+                                                   , AttachmentSampleCountInfoNV
+                                                   , KHR_DYNAMIC_RENDERING_SPEC_VERSION
+                                                   , pattern KHR_DYNAMIC_RENDERING_SPEC_VERSION
+                                                   , KHR_DYNAMIC_RENDERING_EXTENSION_NAME
+                                                   , pattern KHR_DYNAMIC_RENDERING_EXTENSION_NAME
+                                                   ) where
+
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (cmdBeginRendering)
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (cmdEndRendering)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (CommandBufferInheritanceRenderingInfo)
+import Vulkan.Core10.FundamentalTypes (Extent2D)
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
+import Vulkan.Core10.Handles (ImageView)
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PhysicalDeviceDynamicRenderingFeatures)
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (PipelineRenderingCreateInfo)
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingAttachmentInfo)
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlagBits)
+import Vulkan.Core13.Enums.RenderingFlagBits (RenderingFlags)
+import Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering (RenderingInfo)
+import Vulkan.Core10.Enums.SampleCountFlagBits (SampleCountFlagBits)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT))
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
+import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlagBits(PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_RENDERING_INFO))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_INFO_KHR"
+pattern STRUCTURE_TYPE_RENDERING_INFO_KHR = STRUCTURE_TYPE_RENDERING_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR"
+pattern STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR"
+pattern STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO
+
+
+-- No documentation found for TopLevel "VK_ATTACHMENT_STORE_OP_NONE_KHR"
+pattern ATTACHMENT_STORE_OP_NONE_KHR = ATTACHMENT_STORE_OP_NONE
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR"
+pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT"
+pattern PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV"
+pattern STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
+
+
+-- No documentation found for TopLevel "vkCmdBeginRenderingKHR"
+cmdBeginRenderingKHR = cmdBeginRendering
+
+
+-- No documentation found for TopLevel "vkCmdEndRenderingKHR"
+cmdEndRenderingKHR = cmdEndRendering
+
+
+-- | VkRenderingFragmentShadingRateAttachmentInfoKHR - Structure specifying
+-- fragment shading rate attachment information
+--
+-- = Description
+--
+-- This structure can be included in the @pNext@ chain of
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' to
+-- define a
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>.
+-- If @imageView@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE', or if this
+-- structure is not specified, the implementation behaves as if a valid
+-- shading rate attachment was specified with all texels specifying a
+-- single pixel per fragment.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06147#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @layout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06148#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
+--     /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06149#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @shadingRateAttachmentTexelSize.width@ /must/ be a power of two
+--     value
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06150#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
+--     to
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06151#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @shadingRateAttachmentTexelSize.width@ /must/ be greater than or
+--     equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06152#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @shadingRateAttachmentTexelSize.height@ /must/ be a power of two
+--     value
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06153#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
+--     to
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06154#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @shadingRateAttachmentTexelSize.height@ /must/ be greater than or
+--     equal to
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06155#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     quotient of @shadingRateAttachmentTexelSize.width@ and
+--     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
+--     to
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06156#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the
+--     quotient of @shadingRateAttachmentTexelSize.height@ and
+--     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
+--     to
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR'
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-parameter#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'
+--     handle
+--
+-- -   #VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageLayout-parameter#
+--     @imageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>,
+-- 'Vulkan.Core10.FundamentalTypes.Extent2D',
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Handles.ImageView',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RenderingFragmentShadingRateAttachmentInfoKHR = RenderingFragmentShadingRateAttachmentInfoKHR
+  { -- | @imageView@ is the image view that will be used as a fragment shading
+    -- rate attachment.
+    imageView :: ImageView
+  , -- | @imageLayout@ is the layout that @imageView@ will be in during
+    -- rendering.
+    imageLayout :: ImageLayout
+  , -- | @shadingRateAttachmentTexelSize@ specifies the number of pixels
+    -- corresponding to each texel in @imageView@.
+    shadingRateAttachmentTexelSize :: Extent2D
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingFragmentShadingRateAttachmentInfoKHR)
+#endif
+deriving instance Show RenderingFragmentShadingRateAttachmentInfoKHR
+
+instance ToCStruct RenderingFragmentShadingRateAttachmentInfoKHR where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingFragmentShadingRateAttachmentInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)
+    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (shadingRateAttachmentTexelSize)
+    f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    poke ((p `plusPtr` 28 :: Ptr Extent2D)) (zero)
+    f
+
+instance FromCStruct RenderingFragmentShadingRateAttachmentInfoKHR where
+  peekCStruct p = do
+    imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))
+    imageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    shadingRateAttachmentTexelSize <- peekCStruct @Extent2D ((p `plusPtr` 28 :: Ptr Extent2D))
+    pure $ RenderingFragmentShadingRateAttachmentInfoKHR
+             imageView imageLayout shadingRateAttachmentTexelSize
+
+instance Storable RenderingFragmentShadingRateAttachmentInfoKHR where
+  sizeOf ~_ = 40
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero RenderingFragmentShadingRateAttachmentInfoKHR where
+  zero = RenderingFragmentShadingRateAttachmentInfoKHR
+           zero
+           zero
+           zero
+
+
+-- | VkRenderingFragmentDensityMapAttachmentInfoEXT - Structure specifying
+-- fragment shading rate attachment information
+--
+-- = Description
+--
+-- This structure can be included in the @pNext@ chain of
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo' to
+-- define a fragment density map. If this structure is not included in the
+-- @pNext@ chain, @imageView@ is treated as
+-- 'Vulkan.Core10.APIConstants.NULL_HANDLE'.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06157#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+--     @layout@ /must/ be
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL' or
+--     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT'
+--
+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06158#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
+--     /must/ have been created with
+--     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT'
+--
+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06159#
+--     If @imageView@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', it
+--     /must/ not have been created with
+--     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_SUBSAMPLED_BIT_EXT'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-sType-sType#
+--     @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT'
+--
+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-parameter#
+--     @imageView@ /must/ be a valid 'Vulkan.Core10.Handles.ImageView'
+--     handle
+--
+-- -   #VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageLayout-parameter#
+--     @imageLayout@ /must/ be a valid
+--     'Vulkan.Core10.Enums.ImageLayout.ImageLayout' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
+-- 'Vulkan.Core10.Handles.ImageView',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data RenderingFragmentDensityMapAttachmentInfoEXT = RenderingFragmentDensityMapAttachmentInfoEXT
+  { -- | @imageView@ is the image view that will be used as a fragment shading
+    -- rate attachment.
+    imageView :: ImageView
+  , -- | @imageLayout@ is the layout that @imageView@ will be in during
+    -- rendering.
+    imageLayout :: ImageLayout
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (RenderingFragmentDensityMapAttachmentInfoEXT)
+#endif
+deriving instance Show RenderingFragmentDensityMapAttachmentInfoEXT
+
+instance ToCStruct RenderingFragmentDensityMapAttachmentInfoEXT where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p RenderingFragmentDensityMapAttachmentInfoEXT{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (imageView)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (imageLayout)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr ImageView)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr ImageLayout)) (zero)
+    f
+
+instance FromCStruct RenderingFragmentDensityMapAttachmentInfoEXT where
+  peekCStruct p = do
+    imageView <- peek @ImageView ((p `plusPtr` 16 :: Ptr ImageView))
+    imageLayout <- peek @ImageLayout ((p `plusPtr` 24 :: Ptr ImageLayout))
+    pure $ RenderingFragmentDensityMapAttachmentInfoEXT
+             imageView imageLayout
+
+instance Storable RenderingFragmentDensityMapAttachmentInfoEXT where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero RenderingFragmentDensityMapAttachmentInfoEXT where
+  zero = RenderingFragmentDensityMapAttachmentInfoEXT
+           zero
+           zero
+
+
+-- | VkAttachmentSampleCountInfoAMD - Structure specifying command buffer
+-- inheritance info for dynamic render pass instances
+--
+-- = Description
+--
+-- If
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
+-- is 'Vulkan.Core10.APIConstants.NULL_HANDLE',
+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+-- is specified in
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@, and the
+-- @pNext@ chain of
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' includes
+-- 'AttachmentSampleCountInfoAMD', then this structure defines the sample
+-- counts of each attachment within the render pass instance. If
+-- 'AttachmentSampleCountInfoAMD' is not included, the value of
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.CommandBufferInheritanceRenderingInfo'::@rasterizationSamples@
+-- is used as the sample count for each attachment. If
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo'::@renderPass@
+-- is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', or
+-- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT'
+-- is not specified in
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferBeginInfo'::@flags@,
+-- parameters of this structure are ignored.
+--
+-- 'AttachmentSampleCountInfoAMD' /can/ also be included in the @pNext@
+-- chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'. When a
+-- graphics pipeline is created without a
+-- 'Vulkan.Core10.Handles.RenderPass', if this structure is present in the
+-- @pNext@ chain of 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo', it
+-- specifies the sample count of attachments used for rendering. If this
+-- structure is not specified, and the pipeline does not include a
+-- 'Vulkan.Core10.Handles.RenderPass', the value of
+-- 'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
+-- is used as the sample count for each attachment. If a graphics pipeline
+-- is created with a valid 'Vulkan.Core10.Handles.RenderPass', parameters
+-- of this structure are ignored.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkAttachmentSampleCountInfoAMD-sType-sType# @sType@ /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD'
+--
+-- -   #VUID-VkAttachmentSampleCountInfoAMD-pColorAttachmentSamples-parameter#
+--     @pColorAttachmentSamples@ /must/ be a valid pointer to an array of
+--     @colorAttachmentCount@ valid or
+--     'Vulkan.Core10.APIConstants.NULL_HANDLE'
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values
+--
+-- -   #VUID-VkAttachmentSampleCountInfoAMD-depthStencilAttachmentSamples-parameter#
+--     If @depthStencilAttachmentSamples@ is not @0@,
+--     @depthStencilAttachmentSamples@ /must/ be a valid
+--     'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+--
+-- -   #VUID-VkAttachmentSampleCountInfoAMD-colorAttachmentCount-arraylength#
+--     @colorAttachmentCount@ /must/ be greater than @0@
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples VK_NV_framebuffer_mixed_samples>,
+-- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data AttachmentSampleCountInfoAMD = AttachmentSampleCountInfoAMD
+  { -- | @pColorAttachmentSamples@ is a pointer to an array of
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' values
+    -- defining the sample count of color attachments.
+    colorAttachmentSamples :: Vector SampleCountFlagBits
+  , -- | @depthStencilAttachmentSamples@ is a
+    -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SampleCountFlagBits' value
+    -- defining the sample count of a depth\/stencil attachment.
+    depthStencilAttachmentSamples :: SampleCountFlagBits
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (AttachmentSampleCountInfoAMD)
+#endif
+deriving instance Show AttachmentSampleCountInfoAMD
+
+instance ToCStruct AttachmentSampleCountInfoAMD where
+  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p AttachmentSampleCountInfoAMD{..} f = evalContT $ do
+    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)
+    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    lift $ poke ((p `plusPtr` 16 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (colorAttachmentSamples)) :: Word32))
+    pPColorAttachmentSamples' <- ContT $ allocaBytes @SampleCountFlagBits ((Data.Vector.length (colorAttachmentSamples)) * 4)
+    lift $ Data.Vector.imapM_ (\i e -> poke (pPColorAttachmentSamples' `plusPtr` (4 * (i)) :: Ptr SampleCountFlagBits) (e)) (colorAttachmentSamples)
+    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr SampleCountFlagBits))) (pPColorAttachmentSamples')
+    lift $ poke ((p `plusPtr` 32 :: Ptr SampleCountFlagBits)) (depthStencilAttachmentSamples)
+    lift $ f
+  cStructSize = 40
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    f
+
+instance FromCStruct AttachmentSampleCountInfoAMD where
+  peekCStruct p = do
+    colorAttachmentCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    pColorAttachmentSamples <- peek @(Ptr SampleCountFlagBits) ((p `plusPtr` 24 :: Ptr (Ptr SampleCountFlagBits)))
+    pColorAttachmentSamples' <- generateM (fromIntegral colorAttachmentCount) (\i -> peek @SampleCountFlagBits ((pColorAttachmentSamples `advancePtrBytes` (4 * (i)) :: Ptr SampleCountFlagBits)))
+    depthStencilAttachmentSamples <- peek @SampleCountFlagBits ((p `plusPtr` 32 :: Ptr SampleCountFlagBits))
+    pure $ AttachmentSampleCountInfoAMD
+             pColorAttachmentSamples' depthStencilAttachmentSamples
+
+instance Zero AttachmentSampleCountInfoAMD where
+  zero = AttachmentSampleCountInfoAMD
+           mempty
+           zero
+
+
+-- | VkMultiviewPerViewAttributesInfoNVX - Structure specifying the multiview
+-- per-attribute properties
+--
+-- = Description
+--
+-- When dynamic render pass instances are being used, instead of specifying
+-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX'
+-- or
+-- 'Vulkan.Core10.Enums.SubpassDescriptionFlagBits.SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX'
+-- in the subpass description flags, the per-attibute properties of the
+-- render pass instance /must/ be specified by the
+-- 'MultiviewPerViewAttributesInfoNVX' structure Include the
+-- 'MultiviewPerViewAttributesInfoNVX' structure in the @pNext@ chain of
+-- 'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo' when creating a
+-- graphics pipeline for dynamic rendering,
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'
+-- when starting a dynamic render pass instance, and
+-- 'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo' when
+-- specifying the dynamic render pass instance parameters for secondary
+-- command buffers.
+--
+-- == Valid Usage
+--
+-- -   #VUID-VkMultiviewPerViewAttributesInfoNVX-perViewAttributesPositionXOnly-06163#
+--     If @perViewAttributesPositionXOnly@ is
+--     'Vulkan.Core10.FundamentalTypes.TRUE' then @perViewAttributes@
+--     /must/ also be 'Vulkan.Core10.FundamentalTypes.TRUE'
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkMultiviewPerViewAttributesInfoNVX-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering VK_KHR_dynamic_rendering>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes VK_NVX_multiview_per_view_attributes>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data MultiviewPerViewAttributesInfoNVX = MultiviewPerViewAttributesInfoNVX
+  { -- | @perViewAttributes@ specifies that shaders compiled for this pipeline
+    -- write the attributes for all views in a single invocation of each vertex
+    -- processing stage. All pipelines executed within a render pass instance
+    -- that includes this bit /must/ write per-view attributes to the
+    -- @*PerViewNV[]@ shader outputs, in addition to the non-per-view (e.g.
+    -- @Position@) outputs.
+    perViewAttributes :: Bool
+  , -- | @perViewAttributesPositionXOnly@ specifies that shaders compiled for
+    -- this pipeline use per-view positions which only differ in value in the x
+    -- component. Per-view viewport mask /can/ also be used.
+    perViewAttributesPositionXOnly :: Bool
+  }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (MultiviewPerViewAttributesInfoNVX)
+#endif
+deriving instance Show MultiviewPerViewAttributesInfoNVX
+
+instance ToCStruct MultiviewPerViewAttributesInfoNVX where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p MultiviewPerViewAttributesInfoNVX{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (perViewAttributes))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (perViewAttributesPositionXOnly))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct MultiviewPerViewAttributesInfoNVX where
+  peekCStruct p = do
+    perViewAttributes <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    perViewAttributesPositionXOnly <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
+    pure $ MultiviewPerViewAttributesInfoNVX
+             (bool32ToBool perViewAttributes) (bool32ToBool perViewAttributesPositionXOnly)
+
+instance Storable MultiviewPerViewAttributesInfoNVX where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero MultiviewPerViewAttributesInfoNVX where
+  zero = MultiviewPerViewAttributesInfoNVX
+           zero
+           zero
+
+
+-- No documentation found for TopLevel "VkRenderingFlagsKHR"
+type RenderingFlagsKHR = RenderingFlags
+
+
+-- No documentation found for TopLevel "VkRenderingFlagBitsKHR"
+type RenderingFlagBitsKHR = RenderingFlagBits
+
+
+-- No documentation found for TopLevel "VkPipelineRenderingCreateInfoKHR"
+type PipelineRenderingCreateInfoKHR = PipelineRenderingCreateInfo
+
+
+-- No documentation found for TopLevel "VkRenderingInfoKHR"
+type RenderingInfoKHR = RenderingInfo
+
+
+-- No documentation found for TopLevel "VkRenderingAttachmentInfoKHR"
+type RenderingAttachmentInfoKHR = RenderingAttachmentInfo
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceDynamicRenderingFeaturesKHR"
+type PhysicalDeviceDynamicRenderingFeaturesKHR = PhysicalDeviceDynamicRenderingFeatures
+
+
+-- No documentation found for TopLevel "VkCommandBufferInheritanceRenderingInfoKHR"
+type CommandBufferInheritanceRenderingInfoKHR = CommandBufferInheritanceRenderingInfo
 
 
 -- No documentation found for TopLevel "VkAttachmentSampleCountInfoNV"
diff --git a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs-boot b/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_dynamic_rendering.hs-boot
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -36,6 +41,10 @@
 -- [__Last Modified Date__]
 --     2021-10-06
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__Contributors__]
 --
 --     -   Tobias Hector, AMD
@@ -71,9 +80,8 @@
 -- Dynamic render passes can also span across multiple primary command
 -- buffers, rather than relying on secondary command buffers.
 --
--- This extension also incorporates
--- 'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'
--- from <VK_QCOM_render_pass_store_ops.html VK_QCOM_render_pass_store_ops>,
+-- This extension also incorporates 'ATTACHMENT_STORE_OP_NONE_KHR' from
+-- <VK_QCOM_render_pass_store_ops.html VK_QCOM_render_pass_store_ops>,
 -- enabling applications to avoid unnecessary synchronization when an
 -- attachment is not written during a render pass.
 --
@@ -118,7 +126,8 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
 -- is supported:
 --
--- -   Extending 'RenderingInfoKHR':
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
 --
 --     -   'RenderingFragmentDensityMapAttachmentInfoEXT'
 --
@@ -126,7 +135,8 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
 -- is supported:
 --
--- -   Extending 'RenderingInfoKHR':
+-- -   Extending
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
 --
 --     -   'RenderingFragmentShadingRateAttachmentInfoKHR'
 --
@@ -147,7 +157,7 @@
 -- -   Extending
 --     'Vulkan.Core10.CommandBuffer.CommandBufferInheritanceInfo',
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo',
---     'RenderingInfoKHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo':
 --
 --     -   'MultiviewPerViewAttributesInfoNVX'
 --
@@ -167,19 +177,19 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AttachmentStoreOp.AttachmentStoreOp':
 --
---     -   'Vulkan.Core10.Enums.AttachmentStoreOp.ATTACHMENT_STORE_OP_NONE_KHR'
+--     -   'ATTACHMENT_STORE_OP_NONE_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'
+--     -   'STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'
+--     -   'STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'
+--     -   'STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_RENDERING_INFO_KHR'
+--     -   'STRUCTURE_TYPE_RENDERING_INFO_KHR'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_mixed_attachment_samples VK_AMD_mixed_attachment_samples>
@@ -235,6 +245,12 @@
 --
 --     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2021-10-06 (Tobias Hector)
@@ -252,27 +268,20 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_dynamic_rendering Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
 module Vulkan.Extensions.VK_KHR_dynamic_rendering  ( AttachmentSampleCountInfoAMD
-                                                   , CommandBufferInheritanceRenderingInfoKHR
                                                    , MultiviewPerViewAttributesInfoNVX
-                                                   , PhysicalDeviceDynamicRenderingFeaturesKHR
-                                                   , PipelineRenderingCreateInfoKHR
-                                                   , RenderingAttachmentInfoKHR
                                                    , RenderingFragmentDensityMapAttachmentInfoEXT
                                                    , RenderingFragmentShadingRateAttachmentInfoKHR
-                                                   , RenderingInfoKHR
                                                    ) 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 (PokeChain)
+
 data AttachmentSampleCountInfoAMD
 
 instance ToCStruct AttachmentSampleCountInfoAMD
@@ -281,14 +290,6 @@
 instance FromCStruct AttachmentSampleCountInfoAMD
 
 
-data CommandBufferInheritanceRenderingInfoKHR
-
-instance ToCStruct CommandBufferInheritanceRenderingInfoKHR
-instance Show CommandBufferInheritanceRenderingInfoKHR
-
-instance FromCStruct CommandBufferInheritanceRenderingInfoKHR
-
-
 data MultiviewPerViewAttributesInfoNVX
 
 instance ToCStruct MultiviewPerViewAttributesInfoNVX
@@ -297,28 +298,6 @@
 instance FromCStruct MultiviewPerViewAttributesInfoNVX
 
 
-data PhysicalDeviceDynamicRenderingFeaturesKHR
-
-instance ToCStruct PhysicalDeviceDynamicRenderingFeaturesKHR
-instance Show PhysicalDeviceDynamicRenderingFeaturesKHR
-
-instance FromCStruct PhysicalDeviceDynamicRenderingFeaturesKHR
-
-
-data PipelineRenderingCreateInfoKHR
-
-instance ToCStruct PipelineRenderingCreateInfoKHR
-instance Show PipelineRenderingCreateInfoKHR
-
-instance FromCStruct PipelineRenderingCreateInfoKHR
-
-
-data RenderingAttachmentInfoKHR
-
-instance ToCStruct RenderingAttachmentInfoKHR
-instance Show RenderingAttachmentInfoKHR
-
-
 data RenderingFragmentDensityMapAttachmentInfoEXT
 
 instance ToCStruct RenderingFragmentDensityMapAttachmentInfoEXT
@@ -333,11 +312,4 @@
 instance Show RenderingFragmentShadingRateAttachmentInfoKHR
 
 instance FromCStruct RenderingFragmentShadingRateAttachmentInfoKHR
-
-
-type role RenderingInfoKHR nominal
-data RenderingInfoKHR (es :: [Type])
-
-instance (Extendss RenderingInfoKHR es, PokeChain es) => ToCStruct (RenderingInfoKHR es)
-instance Show (Chain es) => Show (RenderingInfoKHR es)
 
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence.hs b/src/Vulkan/Extensions/VK_KHR_external_fence.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_fence.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence.hs
@@ -119,7 +119,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs b/src/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_capabilities.hs
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_capabilities Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs b/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -203,7 +203,7 @@
 -- Exporting a file descriptor from a fence /may/ have side effects
 -- depending on the transference of the specified handle type, as described
 -- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence State>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence State>.
 --
 -- == Return Codes
 --
@@ -330,12 +330,12 @@
 --
 -- -   #VUID-VkImportFenceFdInfoKHR-handleType-01464# @handleType@ /must/
 --     be a value included in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-fd Handle Types Supported by >
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fence-handletypes-fd Handle Types Supported by >
 --     table
 --
 -- -   #VUID-VkImportFenceFdInfoKHR-fd-01541# @fd@ /must/ obey any
 --     requirements listed for @handleType@ in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
 --
 -- If @handleType@ is
 -- 'Vulkan.Core11.Enums.ExternalFenceHandleTypeFlagBits.EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT',
@@ -470,13 +470,13 @@
 -- -   #VUID-VkFenceGetFdInfoKHR-handleType-01454# If @handleType@ refers
 --     to a handle type with copy payload transference semantics, @fence@
 --     /must/ be signaled, or have an associated
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>
 --     pending execution
 --
 -- -   #VUID-VkFenceGetFdInfoKHR-fence-01455# @fence@ /must/ not currently
 --     have its payload replaced by an imported payload as described below
 --     in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>
 --     unless that imported payload’s handle type was included in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'::@exportFromImportedHandleTypes@
 --     for @handleType@
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs-boot b/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_fd.hs-boot
@@ -99,7 +99,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_fd Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -214,7 +214,7 @@
 -- Exporting a Windows handle from a fence /may/ have side effects
 -- depending on the transference of the specified handle type, as described
 -- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>.
 --
 -- == Return Codes
 --
@@ -343,7 +343,7 @@
 --
 -- -   #VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457# @handleType@
 --     /must/ be a value included in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fence-handletypes-win32 Handle Types Supported by >
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fence-handletypes-win32 Handle Types Supported by >
 --     table
 --
 -- -   #VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459# If
@@ -365,11 +365,11 @@
 -- -   #VUID-VkImportFenceWin32HandleInfoKHR-handle-01539# If @handle@ is
 --     not @NULL@, it /must/ obey any requirements listed for @handleType@
 --     in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
 --
 -- -   #VUID-VkImportFenceWin32HandleInfoKHR-name-01540# If @name@ is not
 --     @NULL@, it /must/ obey any requirements listed for @handleType@ in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-fence-handle-types-compatibility external fence handle types compatibility>
 --
 -- == Valid Usage (Implicit)
 --
@@ -603,7 +603,7 @@
 -- -   #VUID-VkFenceGetWin32HandleInfoKHR-fence-01450# @fence@ /must/ not
 --     currently have its payload replaced by an imported payload as
 --     described below in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-importing Importing Fence Payloads>
 --     unless that imported payload’s handle type was included in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_fence_capabilities.ExternalFenceProperties'::@exportFromImportedHandleTypes@
 --     for @handleType@
@@ -611,7 +611,7 @@
 -- -   #VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451# If @handleType@
 --     refers to a handle type with copy payload transference semantics,
 --     @fence@ /must/ be signaled, or have an associated
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>
 --     pending execution
 --
 -- -   #VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452# @handleType@
diff --git a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs-boot b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_external_fence_win32.hs-boot
@@ -118,7 +118,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_fence_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory.hs b/src/Vulkan/Extensions/VK_KHR_external_memory.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory.hs
@@ -146,7 +146,7 @@
 --
 -- 2) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes. Applications must take care to obey all restrictions
@@ -333,7 +333,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs b/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_capabilities.hs
@@ -237,7 +237,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_capabilities Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs b/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -364,11 +364,11 @@
 -- -   #VUID-VkImportMemoryFdInfoKHR-fd-01746# The memory represented by
 --     @fd@ /must/ have been created from a physical device and driver that
 --     is compatible with @device@ and @handleType@, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility>
 --
 -- -   #VUID-VkImportMemoryFdInfoKHR-fd-01520# @fd@ /must/ obey any
 --     requirements listed for @handleType@ in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs-boot b/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_fd.hs-boot
@@ -120,7 +120,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_fd Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs
@@ -131,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -407,11 +407,11 @@
 -- -   #VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518# If @handle@ is
 --     not @NULL@, it /must/ obey any requirements listed for @handleType@
 --     in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
 --
 -- -   #VUID-VkImportMemoryWin32HandleInfoKHR-name-01519# If @name@ is not
 --     @NULL@, it /must/ obey any requirements listed for @handleType@ in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-memory-handle-types-compatibility external memory handle types compatibility>
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs-boot b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_external_memory_win32.hs-boot
@@ -131,7 +131,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_memory_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore.hs b/src/Vulkan/Extensions/VK_KHR_external_semaphore.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore.hs
@@ -140,7 +140,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs b/src/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_capabilities.hs
@@ -151,7 +151,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_capabilities Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs b/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -202,7 +202,7 @@
 -- Exporting a file descriptor from a semaphore /may/ have side effects
 -- depending on the transference of the specified handle type, as described
 -- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore State>.
 --
 -- == Return Codes
 --
@@ -331,12 +331,12 @@
 --
 -- -   #VUID-VkImportSemaphoreFdInfoKHR-handleType-01143# @handleType@
 --     /must/ be a value included in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd Handle Types Supported by >
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphore-handletypes-fd Handle Types Supported by >
 --     table
 --
 -- -   #VUID-VkImportSemaphoreFdInfoKHR-fd-01544# @fd@ /must/ obey any
 --     requirements listed for @handleType@ in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
 --
 -- -   #VUID-VkImportSemaphoreFdInfoKHR-handleType-03263# If @handleType@
 --     is
@@ -497,7 +497,7 @@
 -- -   #VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133# @semaphore@ /must/
 --     not currently have its payload replaced by an imported payload as
 --     described below in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
 --     unless that imported payload’s handle type was included in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@
 --     for @handleType@
@@ -505,13 +505,13 @@
 -- -   #VUID-VkSemaphoreGetFdInfoKHR-handleType-01134# If @handleType@
 --     refers to a handle type with copy payload transference semantics, as
 --     defined below in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
 --     there /must/ be no queue waiting on @semaphore@
 --
 -- -   #VUID-VkSemaphoreGetFdInfoKHR-handleType-01135# If @handleType@
 --     refers to a handle type with copy payload transference semantics,
 --     @semaphore@ /must/ be signaled, or have an associated
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 --     pending execution
 --
 -- -   #VUID-VkSemaphoreGetFdInfoKHR-handleType-01136# @handleType@ /must/
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs-boot b/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_fd.hs-boot
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_fd Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs
@@ -142,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -248,7 +248,7 @@
 -- Exporting a Windows handle from a semaphore /may/ have side effects
 -- depending on the transference of the specified handle type, as described
 -- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>.
 --
 -- == Return Codes
 --
@@ -382,7 +382,7 @@
 --
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140#
 --     @handleType@ /must/ be a value included in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32 Handle Types Supported by >
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphore-handletypes-win32 Handle Types Supported by >
 --     table
 --
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466# If
@@ -406,12 +406,12 @@
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542# If @handle@
 --     is not @NULL@, it /must/ obey any requirements listed for
 --     @handleType@ in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
 --
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543# If @name@ is
 --     not @NULL@, it /must/ obey any requirements listed for @handleType@
 --     in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#external-semaphore-handle-types-compatibility external semaphore handle types compatibility>
 --
 -- -   #VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261# If
 --     @handleType@ is
@@ -673,7 +673,7 @@
 -- or 'Vulkan.Core10.Queue.SubmitInfo'::@pSignalSemaphores@ corresponding
 -- to an entry in @pWaitSemaphoreValues@ or @pSignalSemaphoreValues@
 -- respectively does not currently have a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-payloads payload>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-payloads payload>
 -- referring to a Direct3D 12 fence, the implementation /must/ ignore the
 -- value in the @pWaitSemaphoreValues@ or @pSignalSemaphoreValues@ entry.
 --
@@ -841,7 +841,7 @@
 -- -   #VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128# @semaphore@
 --     /must/ not currently have its payload replaced by an imported
 --     payload as described below in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>
 --     unless that imported payload’s handle type was included in
 --     'Vulkan.Core11.Promoted_From_VK_KHR_external_semaphore_capabilities.ExternalSemaphoreProperties'::@exportFromImportedHandleTypes@
 --     for @handleType@
@@ -849,13 +849,13 @@
 -- -   #VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129# If
 --     @handleType@ refers to a handle type with copy payload transference
 --     semantics, as defined below in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-importing Importing Semaphore Payloads>,
 --     there /must/ be no queue waiting on @semaphore@
 --
 -- -   #VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130# If
 --     @handleType@ refers to a handle type with copy payload transference
 --     semantics, @semaphore@ /must/ be signaled, or have an associated
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
 --     pending execution
 --
 -- -   #VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131#
diff --git a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs-boot b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_external_semaphore_win32.hs-boot
@@ -142,7 +142,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_external_semaphore_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs b/src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs
--- a/src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Lionel Landwerlin
@@ -33,6 +38,10 @@
 -- [__Last Modified Date__]
 --     2021-07-01
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
@@ -52,9 +61,8 @@
 --
 -- == Description
 --
--- This extension adds a new
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
--- 64bits format feature flag type to extend the existing
+-- This extension adds a new 'FormatFeatureFlagBits2KHR' 64bits format
+-- feature flag type to extend the existing
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits' which
 -- is limited to 31 flags. At the time of this writing 29 bits of
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits' are
@@ -69,17 +77,16 @@
 --
 -- On top of replicating all the bits from
 -- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
--- adds the following bits :
+-- 'FormatFeatureFlagBits2KHR' adds the following bits :
 --
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+-- -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
 --     and
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
 --     indicate that an implementation supports respectively reading and
 --     writing a given 'Vulkan.Core10.Enums.Format.Format' through storage
 --     operations without specifying the format in the shader.
 --
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+-- -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
 --     indicates that an implementation supports depth comparison performed
 --     by @OpImage*Dref@ instructions on a given
 --     'Vulkan.Core10.Enums.Format.Format'. Previously the result of
@@ -97,11 +104,11 @@
 --
 -- == New Enums
 --
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
+-- -   'FormatFeatureFlagBits2KHR'
 --
 -- == New Bitmasks
 --
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR'
+-- -   'FormatFeatureFlags2KHR'
 --
 -- == New Enum Constants
 --
@@ -111,8 +118,14 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR'
+--     -   'STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-07-21 (Lionel Landwerlin)
@@ -121,123 +134,45 @@
 --
 -- == See Also
 --
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR',
+-- 'FormatFeatureFlagBits2KHR', 'FormatFeatureFlags2KHR',
 -- 'FormatProperties3KHR'
 --
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_format_feature_flags2  ( FormatProperties3KHR(..)
+module Vulkan.Extensions.VK_KHR_format_feature_flags2  ( pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR
+                                                       , FormatFeatureFlags2KHR
+                                                       , FormatFeatureFlagBits2KHR
+                                                       , FormatProperties3KHR
                                                        , KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION
                                                        , pattern KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION
                                                        , KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME
                                                        , pattern KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME
-                                                       , FormatFeatureFlagBits2KHR(..)
-                                                       , FormatFeatureFlags2KHR
-                                                       , Flags64
                                                        ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
--- | VkFormatProperties3KHR - Structure specifying image format properties
---
--- = Description
---
--- The bits reported in @linearTilingFeatures@, @optimalTilingFeatures@ and
--- @bufferFeatures@ /must/ include the bits reported in the corresponding
--- fields of
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'::@formatProperties@.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 VK_KHR_format_feature_flags2>,
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data FormatProperties3KHR = FormatProperties3KHR
-  { -- | @linearTilingFeatures@ is a bitmask of
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
-    -- specifying features supported by images created with a @tiling@
-    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR'.
-    linearTilingFeatures :: FormatFeatureFlags2KHR
-  , -- | @optimalTilingFeatures@ is a bitmask of
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
-    -- specifying features supported by images created with a @tiling@
-    -- parameter of 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL'.
-    optimalTilingFeatures :: FormatFeatureFlags2KHR
-  , -- | @bufferFeatures@ is a bitmask of
-    -- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
-    -- specifying features supported by buffers.
-    bufferFeatures :: FormatFeatureFlags2KHR
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (FormatProperties3KHR)
-#endif
-deriving instance Show FormatProperties3KHR
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlagBits2)
+import Vulkan.Core13.Enums.FormatFeatureFlags2 (FormatFeatureFlags2)
+import Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2 (FormatProperties3)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_FORMAT_PROPERTIES_3))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR"
+pattern STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = STRUCTURE_TYPE_FORMAT_PROPERTIES_3
 
-instance ToCStruct FormatProperties3KHR where
-  withCStruct x f = allocaBytes 40 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p FormatProperties3KHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2KHR)) (linearTilingFeatures)
-    poke ((p `plusPtr` 24 :: Ptr FormatFeatureFlags2KHR)) (optimalTilingFeatures)
-    poke ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2KHR)) (bufferFeatures)
-    f
-  cStructSize = 40
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
 
-instance FromCStruct FormatProperties3KHR where
-  peekCStruct p = do
-    linearTilingFeatures <- peek @FormatFeatureFlags2KHR ((p `plusPtr` 16 :: Ptr FormatFeatureFlags2KHR))
-    optimalTilingFeatures <- peek @FormatFeatureFlags2KHR ((p `plusPtr` 24 :: Ptr FormatFeatureFlags2KHR))
-    bufferFeatures <- peek @FormatFeatureFlags2KHR ((p `plusPtr` 32 :: Ptr FormatFeatureFlags2KHR))
-    pure $ FormatProperties3KHR
-             linearTilingFeatures optimalTilingFeatures bufferFeatures
+-- No documentation found for TopLevel "VkFormatFeatureFlags2KHR"
+type FormatFeatureFlags2KHR = FormatFeatureFlags2
 
-instance Storable FormatProperties3KHR where
-  sizeOf ~_ = 40
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero FormatProperties3KHR where
-  zero = FormatProperties3KHR
-           zero
-           zero
-           zero
+-- No documentation found for TopLevel "VkFormatFeatureFlagBits2KHR"
+type FormatFeatureFlagBits2KHR = FormatFeatureFlagBits2
+
+
+-- No documentation found for TopLevel "VkFormatProperties3KHR"
+type FormatProperties3KHR = FormatProperties3
 
 
 type KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs-boot b/src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_format_feature_flags2.hs-boot
+++ /dev/null
@@ -1,147 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_format_feature_flags2 - device extension
---
--- == VK_KHR_format_feature_flags2
---
--- [__Name String__]
---     @VK_KHR_format_feature_flags2@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     361
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Lionel Landwerlin
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_format_feature_flags2] @llandwerlin%0A<<Here describe the issue or question you have about the VK_KHR_format_feature_flags2 extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2021-07-01
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Lionel Landwerlin, Intel
---
---     -   Jason Ekstrand, Intel
---
---     -   Tobias Hector, AMD
---
---     -   Spencer Fricke, Samsung Electronics
---
---     -   Graeme Leese, Broadcom
---
---     -   Jan-Harald Fredriksen, ARM
---
--- == Description
---
--- This extension adds a new
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
--- 64bits format feature flag type to extend the existing
--- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits' which
--- is limited to 31 flags. At the time of this writing 29 bits of
--- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits' are
--- already used.
---
--- Because
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2'
--- is already defined to extend the Vulkan 1.0
--- 'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceFormatProperties'
--- entry point, this extension defines a new 'FormatProperties3KHR' to
--- extend the 'Vulkan.Core10.DeviceInitialization.FormatProperties'.
---
--- On top of replicating all the bits from
--- 'Vulkan.Core10.Enums.FormatFeatureFlagBits.FormatFeatureFlagBits',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
--- adds the following bits :
---
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
---     and
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
---     indicate that an implementation supports respectively reading and
---     writing a given 'Vulkan.Core10.Enums.Format.Format' through storage
---     operations without specifying the format in the shader.
---
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
---     indicates that an implementation supports depth comparison performed
---     by @OpImage*Dref@ instructions on a given
---     'Vulkan.Core10.Enums.Format.Format'. Previously the result of
---     executing a @OpImage*Dref*@ instruction on an image view, where the
---     @format@ was not one of the depth\/stencil formats with a depth
---     component, was undefined. This bit clarifies on which formats such
---     instructions can be used.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.FormatProperties2':
---
---     -   'FormatProperties3KHR'
---
--- == New Enums
---
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
---
--- == New Bitmasks
---
--- -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR'
---
--- == New Enum Constants
---
--- -   'KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME'
---
--- -   'KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR'
---
--- == Version History
---
--- -   Revision 1, 2020-07-21 (Lionel Landwerlin)
---
---     -   Initial draft
---
--- == See Also
---
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR',
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlags2KHR',
--- 'FormatProperties3KHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_format_feature_flags2 Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_format_feature_flags2  (FormatProperties3KHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data FormatProperties3KHR
-
-instance ToCStruct FormatProperties3KHR
-instance Show FormatProperties3KHR
-
-instance FromCStruct FormatProperties3KHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs
--- a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs
+++ b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs
@@ -80,14 +80,14 @@
 -- Up to three methods are available to the application to change the
 -- fragment shading rate:
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
 --     which allows the specification of a rate per-draw.
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
 --     which allows the specification of a rate per primitive, specified
 --     during shading.
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,
 --     which allows the specification of a rate per-region of the
 --     framebuffer, specified in a specialized image attachment.
 --
@@ -101,7 +101,7 @@
 --
 -- This extension also adds support for the @SPV_KHR_fragment_shading_rate@
 -- extension which enables setting the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,
 -- and allows querying the final shading rate from a fragment shader.
 --
 -- == New Commands
@@ -188,9 +188,9 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- == Version History
 --
@@ -216,7 +216,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -238,9 +238,6 @@
                                                        , pattern KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION
                                                        , KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
                                                        , pattern KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME
-                                                       , FormatFeatureFlagBits2KHR(..)
-                                                       , FormatFeatureFlags2KHR
-                                                       , Flags64
                                                        ) where
 
 import Vulkan.CStruct.Utils (FixedArray)
@@ -323,9 +320,6 @@
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR))
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR))
 import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
 foreign import ccall
 #if !defined(SAFE_FOREIGN_CALLS)
   unsafe
@@ -352,37 +346,37 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507#
 --     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     is not enabled, @pFragmentSize->width@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508#
 --     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     is not enabled, @pFragmentSize->height@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509#
 --     One of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     /must/ be enabled
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
 --     is not enabled, @combinerOps@[0] /must/ be
 --     'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is not enabled, @combinerOps@[1] /must/ be
 --     'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentSizeNonTrivialCombinerOps>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentSizeNonTrivialCombinerOps>
 --     limit is not supported, elements of @combinerOps@ /must/ be either
 --     'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR' or
 --     'FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR'
@@ -461,12 +455,12 @@
                                 ("fragmentSize" ::: Extent2D)
                              -> -- | @combinerOps@ specifies a 'FragmentShadingRateCombinerOpKHR' determining
                                 -- how the
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
                                 -- and
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
                                 -- are
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
                                 -- for fragments generated by subsequent drawing commands.
                                 ("combinerOps" ::: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR))
                              -> io ()
@@ -519,7 +513,7 @@
 -- For any entry in the array, the following rules also apply:
 --
 -- -   The value of @fragmentSize.width@ /must/ be less than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.width>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.width>.
 --
 -- -   The value of @fragmentSize.width@ /must/ be greater than or equal to
 --     @1@.
@@ -527,7 +521,7 @@
 -- -   The value of @fragmentSize.width@ /must/ be a power-of-two.
 --
 -- -   The value of @fragmentSize.height@ /must/ be less than or equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.height>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentSize maxFragmentSize.height>.
 --
 -- -   The value of @fragmentSize.height@ /must/ be greater than or equal
 --     to @1@.
@@ -536,12 +530,12 @@
 --
 -- -   The highest sample count in @sampleCounts@ /must/ be less than or
 --     equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateRasterizationSamples maxFragmentShadingRateRasterizationSamples>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateRasterizationSamples maxFragmentShadingRateRasterizationSamples>.
 --
 -- -   The product of @fragmentSize.width@, @fragmentSize.height@, and the
 --     highest sample count in @sampleCounts@ /must/ be less than or equal
 --     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateCoverageSamples maxFragmentShadingRateCoverageSamples>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateCoverageSamples maxFragmentShadingRateCoverageSamples>.
 --
 -- Implementations /must/ support at least the following shading rates:
 --
@@ -560,7 +554,7 @@
 -- +--------------------------------------------------------------+-----------------------------------+
 --
 -- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-framebufferColorSampleCounts framebufferColorSampleCounts>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-framebufferColorSampleCounts framebufferColorSampleCounts>,
 -- includes 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT',
 -- the required rates /must/ also include
 -- 'Vulkan.Core10.Enums.SampleCountFlagBits.SAMPLE_COUNT_2_BIT'.
@@ -681,7 +675,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
 --     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.width>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -689,7 +683,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.width@ /must/ be greater than or
 --     equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.width>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -704,7 +698,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
 --     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSize maxFragmentShadingRateAttachmentTexelSize.height>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -712,7 +706,7 @@
 --     'Vulkan.Core10.APIConstants.ATTACHMENT_UNUSED',
 --     @shadingRateAttachmentTexelSize.height@ /must/ be greater than or
 --     equal to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-minFragmentShadingRateAttachmentTexelSize minFragmentShadingRateAttachmentTexelSize.height>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -721,7 +715,7 @@
 --     @shadingRateAttachmentTexelSize.width@ and
 --     @shadingRateAttachmentTexelSize.height@ /must/ be less than or equal
 --     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
 --
 -- -   #VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532#
 --     If @pFragmentShadingRateAttachment@ is not @NULL@ and its
@@ -730,7 +724,7 @@
 --     @shadingRateAttachmentTexelSize.height@ and
 --     @shadingRateAttachmentTexelSize.width@ /must/ be less than or equal
 --     to
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio maxFragmentShadingRateAttachmentTexelSizeAspectRatio>
 --
 -- == Valid Usage (Implicit)
 --
@@ -839,12 +833,12 @@
     fragmentSize :: Extent2D
   , -- | @combinerOps@ specifies a 'FragmentShadingRateCombinerOpKHR' value
     -- determining how the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
     -- are
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
     -- for fragments generated by drawing commands using the created pipeline.
     combinerOps :: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR)
   }
@@ -929,15 +923,15 @@
 data PhysicalDeviceFragmentShadingRateFeaturesKHR = PhysicalDeviceFragmentShadingRateFeaturesKHR
   { -- | #features-pipelineFragmentShadingRate# @pipelineFragmentShadingRate@
     -- indicates that the implementation supports the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline fragment shading rate>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline fragment shading rate>.
     pipelineFragmentShadingRate :: Bool
   , -- | #features-primitiveFragmentShadingRate# @primitiveFragmentShadingRate@
     -- indicates that the implementation supports the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>.
     primitiveFragmentShadingRate :: Bool
   , -- | #features-attachmentFragmentShadingRate# @attachmentFragmentShadingRate@
     -- indicates that the implementation supports the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment fragment shading rate>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment fragment shading rate>.
     attachmentFragmentShadingRate :: Bool
   }
   deriving (Typeable, Eq)
@@ -999,7 +993,7 @@
 -- Some implementations inadvertently implemented an addition in linear
 -- space due to unclear requirements originating outside of this
 -- specification. This resulted in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
 -- being added. Fortunately, this only affects situations where a rate of 1
 -- in either dimension is combined with another rate of 1. All other
 -- combinations result in the exact same result as if multiplication was
@@ -1016,7 +1010,7 @@
 -- property.
 --
 -- These properties are related to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
 --
 -- == Valid Usage (Implicit)
 --
@@ -1035,7 +1029,7 @@
     -- than or equal to the values in
     -- @maxFragmentShadingRateAttachmentTexelSize@. Each value /must/ be a
     -- power-of-two. It /must/ be (0,0) if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     minFragmentShadingRateAttachmentTexelSize :: Extent2D
   , -- | #limits-maxFragmentShadingRateAttachmentTexelSize#
@@ -1045,7 +1039,7 @@
     -- greater than or equal to the values in
     -- @minFragmentShadingRateAttachmentTexelSize@. Each value /must/ be a
     -- power-of-two. It /must/ be (0,0) if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     maxFragmentShadingRateAttachmentTexelSize :: Extent2D
   , -- | #limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio#
@@ -1059,23 +1053,23 @@
     -- @maxFragmentShadingRateAttachmentTexelSize.height@ \/
     -- @minFragmentShadingRateAttachmentTexelSize.width@). It /must/ be 0 if
     -- the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     maxFragmentShadingRateAttachmentTexelSizeAspectRatio :: Word32
   , -- | #limits-primitiveFragmentShadingRateWithMultipleViewports#
     -- @primitiveFragmentShadingRateWithMultipleViewports@ specifies whether
     -- the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>
     -- /can/ be used when multiple viewports are used. If this value is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', only a single viewport /must/ be
     -- used, and applications /must/ not write to the @ViewportMaskNV@ or
     -- @ViewportIndex@ built-in when setting @PrimitiveShadingRateKHR@. It
     -- /must/ be 'Vulkan.Core10.FundamentalTypes.FALSE' if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
     -- feature, the @VK_EXT_shader_viewport_index_layer@ extension, or the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
     -- feature is not supported, or if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
     -- feature is not supported.
     primitiveFragmentShadingRateWithMultipleViewports :: Bool
   , -- | #limits-layeredShadingRateAttachments# @layeredShadingRateAttachments@
@@ -1086,13 +1080,13 @@
     -- 'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR',
     -- @layerCount@ /must/ be @1@. It /must/ be
     -- 'Vulkan.Core10.FundamentalTypes.FALSE' if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiview multiview>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiview multiview>
     -- feature, the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderOutputViewportIndex shaderOutputViewportIndex>
     -- feature, the @VK_EXT_shader_viewport_index_layer@ extension, or the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometryShader>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-geometryShader geometryShader>
     -- feature is not supported, or if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is not supported.
     layeredShadingRateAttachments :: Bool
   , -- | #limits-fragmentShadingRateNonTrivialCombinerOps#
@@ -1101,9 +1095,9 @@
     -- 'FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR' or
     -- 'FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR' /can/ be used. It /must/
     -- be 'Vulkan.Core10.FundamentalTypes.FALSE' unless either the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>
     -- or
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
     -- feature is supported.
     fragmentShadingRateNonTrivialCombinerOps :: Bool
   , -- | #limits-maxFragmentSize# @maxFragmentSize@ indicates the maximum
@@ -1160,32 +1154,32 @@
     fragmentShadingRateWithShaderSampleMask :: Bool
   , -- | #limits-fragmentShadingRateWithConservativeRasterization#
     -- @fragmentShadingRateWithConservativeRasterization@ specifies whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-conservativeraster conservative rasterization>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-conservativeraster conservative rasterization>
     -- is supported for multi-pixel fragments. It /must/ be
     -- 'Vulkan.Core10.FundamentalTypes.FALSE' if
     -- @VK_EXT_conservative_rasterization@ is not supported. If this value is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', using
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-conservativeraster conservative rasterization>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-conservativeraster conservative rasterization>
     -- will clamp the fragment shading rate to (1,1).
     fragmentShadingRateWithConservativeRasterization :: Bool
   , -- | #limits-fragmentShadingRateWithFragmentShaderInterlock#
     -- @fragmentShadingRateWithFragmentShaderInterlock@ specifies whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader-interlock fragment shader interlock>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-interlock fragment shader interlock>
     -- is supported for multi-pixel fragments. It /must/ be
     -- 'Vulkan.Core10.FundamentalTypes.FALSE' if
     -- @VK_EXT_fragment_shader_interlock@ is not supported. If this value is
     -- 'Vulkan.Core10.FundamentalTypes.FALSE', using
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-shader-interlock fragment shader interlock>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-shader-interlock fragment shader interlock>
     -- will clamp the fragment shading rate to (1,1).
     fragmentShadingRateWithFragmentShaderInterlock :: Bool
   , -- | #limits-fragmentShadingRateWithCustomSampleLocations#
     -- @fragmentShadingRateWithCustomSampleLocations@ specifies whether
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-samplelocations custom sample locations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-samplelocations custom sample locations>
     -- are supported for multi-pixel fragments. It /must/ be
     -- 'Vulkan.Core10.FundamentalTypes.FALSE' if @VK_EXT_sample_locations@ is
     -- not supported. If this value is 'Vulkan.Core10.FundamentalTypes.FALSE',
     -- using
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-samplelocations custom sample locations>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-samplelocations custom sample locations>
     -- will clamp the fragment shading rate to (1,1).
     fragmentShadingRateWithCustomSampleLocations :: Bool
   , -- | #limits-fragmentShadingRateStrictMultiplyCombiner#
@@ -1374,12 +1368,12 @@
 -- inputs to the operation.
 --
 -- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
 -- is 'Vulkan.Core10.FundamentalTypes.FALSE', using
 -- 'FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR' with values of 1 for both A
 -- and B in the same dimension results in the value 2 being produced for
 -- that dimension. See the definition of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateStrictMultiplyCombiner fragmentShadingRateStrictMultiplyCombiner>
 -- for more information.
 --
 -- These operations are performed in a component-wise fashion.
diff --git a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_fragment_shading_rate.hs-boot
@@ -80,14 +80,14 @@
 -- Up to three methods are available to the application to change the
 -- fragment shading rate:
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline>,
 --     which allows the specification of a rate per-draw.
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive>,
 --     which allows the specification of a rate per primitive, specified
 --     during shading.
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment>,
 --     which allows the specification of a rate per-region of the
 --     framebuffer, specified in a specialized image attachment.
 --
@@ -101,7 +101,7 @@
 --
 -- This extension also adds support for the @SPV_KHR_fragment_shading_rate@
 -- extension which enables setting the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive fragment shading rate>,
 -- and allows querying the final shading rate from a fragment shader.
 --
 -- == New Commands
@@ -188,9 +188,9 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- == Version History
 --
@@ -216,7 +216,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs b/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs-boot b/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_get_display_properties2.hs-boot
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_display_properties2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs
@@ -124,7 +124,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_get_memory_requirements2.hs-boot
@@ -124,7 +124,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_memory_requirements2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs b/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_physical_device_properties2.hs
@@ -212,7 +212,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_physical_device_properties2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
--- a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs
@@ -137,7 +137,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs-boot b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_get_surface_capabilities2.hs-boot
@@ -137,7 +137,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_get_surface_capabilities2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_global_priority.hs b/src/Vulkan/Extensions/VK_KHR_global_priority.hs
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_global_priority.hs
@@ -0,0 +1,539 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_global_priority - device extension
+--
+-- == VK_KHR_global_priority
+--
+-- [__Name String__]
+--     @VK_KHR_global_priority@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     189
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_global_priority] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_global_priority extension>> >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-10-22
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Contributors to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority VK_EXT_global_priority>
+--
+--     -   Contributors to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority_query VK_EXT_global_priority_query>
+--
+-- == Description
+--
+-- In Vulkan, users can specify device-scope queue priorities. In some
+-- cases it may be useful to extend this concept to a system-wide scope.
+-- This device extension allows applications to query the global queue
+-- priorities supported by a queue family, and then set a priority when
+-- creating queues. The default queue priority is
+-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
+--
+-- Implementations can report which global priority levels are treated
+-- differently by the implementation. It is intended primarily for use in
+-- system integration along with certain platform-specific priority
+-- enforcement rules.
+--
+-- The driver implementation will attempt to skew hardware resource
+-- allocation in favour of the higher-priority task. Therefore,
+-- higher-priority work may retain similar latency and throughput
+-- characteristics even if the system is congested with lower priority
+-- work.
+--
+-- The global priority level of a queue shall take precedence over the
+-- per-process queue priority
+-- ('Vulkan.Core10.Device.DeviceQueueCreateInfo'::@pQueuePriorities@).
+--
+-- Abuse of this feature may result in starving the rest of the system from
+-- hardware resources. Therefore, the driver implementation may deny
+-- requests to acquire a priority above the default priority
+-- ('QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT') if the caller does not have
+-- sufficient privileges. In this scenario
+-- 'Vulkan.Extensions.VK_EXT_global_priority.ERROR_NOT_PERMITTED_EXT' is
+-- returned.
+--
+-- The driver implementation may fail the queue allocation request if
+-- resources required to complete the operation have been exhausted (either
+-- by the same process or a different process). In this scenario
+-- 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' is returned.
+--
+-- == New Structures
+--
+-- -   Extending 'Vulkan.Core10.Device.DeviceQueueCreateInfo':
+--
+--     -   'DeviceQueueGlobalPriorityCreateInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceGlobalPriorityQueryFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
+--
+--     -   'QueueFamilyGlobalPriorityPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'QueueGlobalPriorityKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_GLOBAL_PRIORITY_EXTENSION_NAME'
+--
+-- -   'KHR_GLOBAL_PRIORITY_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR'
+--
+-- == Issues
+--
+-- 1) Can we additionally query whether a caller is permitted to acquire a
+-- specific global queue priority in this extension?
+--
+-- __RESOLVED__: No. Whether a caller has enough privilege goes with the
+-- OS, and the Vulkan driver cannot really guarantee that the privilege
+-- will not change in between this query and the actual queue creation
+-- call.
+--
+-- 2) If more than 1 queue using global priority is requested, is there a
+-- good way to know which queue is failing the device creation?
+--
+-- __RESOLVED__: No. There is not a good way at this moment, and it is also
+-- not quite actionable for the applications to know that because the
+-- information may not be accurate. Queue creation can fail because of
+-- runtime constraints like insufficient privilege or lack of resource, and
+-- the failure is not necessarily tied to that particular queue
+-- configuration requested.
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-10-22 (Tobias Hector)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- 'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_KHR',
+-- 'DeviceQueueGlobalPriorityCreateInfoKHR',
+-- 'PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
+-- 'QueueFamilyGlobalPriorityPropertiesKHR', 'QueueGlobalPriorityKHR'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_global_priority Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_KHR_global_priority  ( pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT
+                                                 , pattern QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
+                                                 , DeviceQueueGlobalPriorityCreateInfoKHR(..)
+                                                 , PhysicalDeviceGlobalPriorityQueryFeaturesKHR(..)
+                                                 , QueueFamilyGlobalPriorityPropertiesKHR(..)
+                                                 , QueueGlobalPriorityKHR( QUEUE_GLOBAL_PRIORITY_LOW_KHR
+                                                                         , QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR
+                                                                         , QUEUE_GLOBAL_PRIORITY_HIGH_KHR
+                                                                         , QUEUE_GLOBAL_PRIORITY_REALTIME_KHR
+                                                                         , ..
+                                                                         )
+                                                 , KHR_GLOBAL_PRIORITY_SPEC_VERSION
+                                                 , pattern KHR_GLOBAL_PRIORITY_SPEC_VERSION
+                                                 , KHR_GLOBAL_PRIORITY_EXTENSION_NAME
+                                                 , pattern KHR_GLOBAL_PRIORITY_EXTENSION_NAME
+                                                 , MAX_GLOBAL_PRIORITY_SIZE_KHR
+                                                 , pattern MAX_GLOBAL_PRIORITY_SIZE_KHR
+                                                 ) where
+
+import Vulkan.CStruct.Utils (FixedArray)
+import Vulkan.Internal.Utils (enumReadPrec)
+import Vulkan.Internal.Utils (enumShowsPrec)
+import Control.Monad (unless)
+import Foreign.Marshal.Alloc (allocaBytes)
+import GHC.IO (throwIO)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import GHC.Show (showsPrec)
+import Data.Vector (generateM)
+import qualified Data.Vector (imapM_)
+import qualified Data.Vector (length)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero)
+import Vulkan.Zero (Zero(..))
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Data.Int (Int32)
+import Foreign.Ptr (Ptr)
+import GHC.Read (Read(readPrec))
+import GHC.Show (Show(showsPrec))
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core10.FundamentalTypes (bool32ToBool)
+import Vulkan.Core10.FundamentalTypes (boolToBool32)
+import Vulkan.CStruct.Utils (lowerArrayPtr)
+import Vulkan.Core10.FundamentalTypes (Bool32)
+import Vulkan.Core10.APIConstants (MAX_GLOBAL_PRIORITY_SIZE_KHR)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE_KHR)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR))
+import Vulkan.Core10.APIConstants (MAX_GLOBAL_PRIORITY_SIZE_KHR)
+import Vulkan.Core10.APIConstants (pattern MAX_GLOBAL_PRIORITY_SIZE_KHR)
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_LOW_EXT = QUEUE_GLOBAL_PRIORITY_LOW_KHR
+
+
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR
+
+
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_HIGH_EXT = QUEUE_GLOBAL_PRIORITY_HIGH_KHR
+
+
+-- No documentation found for TopLevel "VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT"
+pattern QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = QUEUE_GLOBAL_PRIORITY_REALTIME_KHR
+
+
+-- | VkDeviceQueueGlobalPriorityCreateInfoKHR - Specify a system wide
+-- priority
+--
+-- = Description
+--
+-- A queue created without specifying
+-- 'DeviceQueueGlobalPriorityCreateInfoKHR' will default to
+-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR'.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority VK_EXT_global_priority>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>,
+-- 'QueueGlobalPriorityKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data DeviceQueueGlobalPriorityCreateInfoKHR = DeviceQueueGlobalPriorityCreateInfoKHR
+  { -- | @globalPriority@ is the system-wide priority associated to this queue as
+    -- specified by
+    -- 'Vulkan.Extensions.VK_EXT_global_priority.QueueGlobalPriorityEXT'
+    --
+    -- #VUID-VkDeviceQueueGlobalPriorityCreateInfoKHR-globalPriority-parameter#
+    -- @globalPriority@ /must/ be a valid 'QueueGlobalPriorityKHR' value
+    globalPriority :: QueueGlobalPriorityKHR }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (DeviceQueueGlobalPriorityCreateInfoKHR)
+#endif
+deriving instance Show DeviceQueueGlobalPriorityCreateInfoKHR
+
+instance ToCStruct DeviceQueueGlobalPriorityCreateInfoKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p DeviceQueueGlobalPriorityCreateInfoKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityKHR)) (globalPriority)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityKHR)) (zero)
+    f
+
+instance FromCStruct DeviceQueueGlobalPriorityCreateInfoKHR where
+  peekCStruct p = do
+    globalPriority <- peek @QueueGlobalPriorityKHR ((p `plusPtr` 16 :: Ptr QueueGlobalPriorityKHR))
+    pure $ DeviceQueueGlobalPriorityCreateInfoKHR
+             globalPriority
+
+instance Storable DeviceQueueGlobalPriorityCreateInfoKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero DeviceQueueGlobalPriorityCreateInfoKHR where
+  zero = DeviceQueueGlobalPriorityCreateInfoKHR
+           zero
+
+
+-- | VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR - Structure describing
+-- whether global priority query can be supported by an implementation
+--
+-- = Members
+--
+-- The members of the
+-- 'Vulkan.Extensions.VK_EXT_global_priority_query.PhysicalDeviceGlobalPriorityQueryFeaturesEXT'
+-- structure describe the following features:
+--
+-- = Description
+--
+-- If the 'PhysicalDeviceGlobalPriorityQueryFeaturesKHR' 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. 'PhysicalDeviceGlobalPriorityQueryFeaturesKHR' /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_KHR_global_priority VK_KHR_global_priority>,
+-- 'Vulkan.Core10.FundamentalTypes.Bool32',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data PhysicalDeviceGlobalPriorityQueryFeaturesKHR = PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+  { -- | #features-globalPriorityQuery# @globalPriorityQuery@ indicates whether
+    -- the implementation supports the ability to query global queue
+    -- priorities.
+    globalPriorityQuery :: Bool }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (PhysicalDeviceGlobalPriorityQueryFeaturesKHR)
+#endif
+deriving instance Show PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+
+instance ToCStruct PhysicalDeviceGlobalPriorityQueryFeaturesKHR where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p PhysicalDeviceGlobalPriorityQueryFeaturesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (globalPriorityQuery))
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
+    f
+
+instance FromCStruct PhysicalDeviceGlobalPriorityQueryFeaturesKHR where
+  peekCStruct p = do
+    globalPriorityQuery <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
+    pure $ PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+             (bool32ToBool globalPriorityQuery)
+
+instance Storable PhysicalDeviceGlobalPriorityQueryFeaturesKHR where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero PhysicalDeviceGlobalPriorityQueryFeaturesKHR where
+  zero = PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+           zero
+
+
+-- | VkQueueFamilyGlobalPriorityPropertiesKHR - Return structure for queue
+-- family global priority information query
+--
+-- = Description
+--
+-- The valid elements of @priorities@ /must/ not contain any duplicate
+-- values.
+--
+-- The valid elements of @priorities@ /must/ be a continuous sequence of
+-- 'QueueGlobalPriorityKHR' enums in the ascending order.
+--
+-- Note
+--
+-- For example, returning @priorityCount@ as 3 with supported @priorities@
+-- as 'QUEUE_GLOBAL_PRIORITY_LOW_KHR', 'QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR'
+-- and 'QUEUE_GLOBAL_PRIORITY_REALTIME_KHR' is not allowed.
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-VkQueueFamilyGlobalPriorityPropertiesKHR-sType-sType# @sType@
+--     /must/ be
+--     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR'
+--
+-- -   #VUID-VkQueueFamilyGlobalPriorityPropertiesKHR-priorities-parameter#
+--     Any given element of @priorities@ /must/ be a valid
+--     'QueueGlobalPriorityKHR' value
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>,
+-- 'QueueGlobalPriorityKHR',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data QueueFamilyGlobalPriorityPropertiesKHR = QueueFamilyGlobalPriorityPropertiesKHR
+  { -- | @priorityCount@ is the number of supported global queue priorities in
+    -- this queue family, and it /must/ be greater than 0.
+    priorityCount :: Word32
+  , -- | @priorities@ is an array of
+    -- 'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_EXT'
+    -- 'Vulkan.Extensions.VK_EXT_global_priority.QueueGlobalPriorityEXT' enums
+    -- representing all supported global queue priorities in this queue family.
+    -- The first @priorityCount@ elements of the array will be valid.
+    priorities :: Vector QueueGlobalPriorityKHR
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyGlobalPriorityPropertiesKHR)
+#endif
+deriving instance Show QueueFamilyGlobalPriorityPropertiesKHR
+
+instance ToCStruct QueueFamilyGlobalPriorityPropertiesKHR where
+  withCStruct x f = allocaBytes 88 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyGlobalPriorityPropertiesKHR{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (priorityCount)
+    unless ((Data.Vector.length $ (priorities)) <= MAX_GLOBAL_PRIORITY_SIZE_KHR) $
+      throwIO $ IOError Nothing InvalidArgument "" "priorities is too long, a maximum of MAX_GLOBAL_PRIORITY_SIZE_KHR elements are allowed" Nothing Nothing
+    Data.Vector.imapM_ (\i e -> poke ((lowerArrayPtr ((p `plusPtr` 20 :: Ptr (FixedArray MAX_GLOBAL_PRIORITY_SIZE_KHR QueueGlobalPriorityKHR)))) `plusPtr` (4 * (i)) :: Ptr QueueGlobalPriorityKHR) (e)) (priorities)
+    f
+  cStructSize = 88
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr Word32)) (zero)
+    f
+
+instance FromCStruct QueueFamilyGlobalPriorityPropertiesKHR where
+  peekCStruct p = do
+    priorityCount <- peek @Word32 ((p `plusPtr` 16 :: Ptr Word32))
+    priorities <- generateM (MAX_GLOBAL_PRIORITY_SIZE_KHR) (\i -> peek @QueueGlobalPriorityKHR (((lowerArrayPtr @QueueGlobalPriorityKHR ((p `plusPtr` 20 :: Ptr (FixedArray MAX_GLOBAL_PRIORITY_SIZE_KHR QueueGlobalPriorityKHR)))) `advancePtrBytes` (4 * (i)) :: Ptr QueueGlobalPriorityKHR)))
+    pure $ QueueFamilyGlobalPriorityPropertiesKHR
+             priorityCount priorities
+
+instance Storable QueueFamilyGlobalPriorityPropertiesKHR where
+  sizeOf ~_ = 88
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyGlobalPriorityPropertiesKHR where
+  zero = QueueFamilyGlobalPriorityPropertiesKHR
+           zero
+           mempty
+
+
+-- | VkQueueGlobalPriorityKHR - Values specifying a system-wide queue
+-- priority
+--
+-- = Description
+--
+-- Priority values are sorted in ascending order. A comparison operation on
+-- the enum values can be used to determine the priority order.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority VK_EXT_global_priority>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_global_priority VK_KHR_global_priority>,
+-- 'DeviceQueueGlobalPriorityCreateInfoKHR',
+-- 'QueueFamilyGlobalPriorityPropertiesKHR'
+newtype QueueGlobalPriorityKHR = QueueGlobalPriorityKHR Int32
+  deriving newtype (Eq, Ord, Storable, Zero)
+-- Note that the zero instance does not produce a valid value, passing 'zero' to Vulkan will result in an error
+
+-- | 'QUEUE_GLOBAL_PRIORITY_LOW_KHR' is below the system default. Useful for
+-- non-interactive tasks.
+pattern QUEUE_GLOBAL_PRIORITY_LOW_KHR      = QueueGlobalPriorityKHR 128
+-- | 'QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR' is the system default priority.
+pattern QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR   = QueueGlobalPriorityKHR 256
+-- | 'QUEUE_GLOBAL_PRIORITY_HIGH_KHR' is above the system default.
+pattern QUEUE_GLOBAL_PRIORITY_HIGH_KHR     = QueueGlobalPriorityKHR 512
+-- | 'QUEUE_GLOBAL_PRIORITY_REALTIME_KHR' is the highest priority. Useful for
+-- critical tasks.
+pattern QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = QueueGlobalPriorityKHR 1024
+{-# complete QUEUE_GLOBAL_PRIORITY_LOW_KHR,
+             QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR,
+             QUEUE_GLOBAL_PRIORITY_HIGH_KHR,
+             QUEUE_GLOBAL_PRIORITY_REALTIME_KHR :: QueueGlobalPriorityKHR #-}
+
+conNameQueueGlobalPriorityKHR :: String
+conNameQueueGlobalPriorityKHR = "QueueGlobalPriorityKHR"
+
+enumPrefixQueueGlobalPriorityKHR :: String
+enumPrefixQueueGlobalPriorityKHR = "QUEUE_GLOBAL_PRIORITY_"
+
+showTableQueueGlobalPriorityKHR :: [(QueueGlobalPriorityKHR, String)]
+showTableQueueGlobalPriorityKHR =
+  [ (QUEUE_GLOBAL_PRIORITY_LOW_KHR     , "LOW_KHR")
+  , (QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR  , "MEDIUM_KHR")
+  , (QUEUE_GLOBAL_PRIORITY_HIGH_KHR    , "HIGH_KHR")
+  , (QUEUE_GLOBAL_PRIORITY_REALTIME_KHR, "REALTIME_KHR")
+  ]
+
+instance Show QueueGlobalPriorityKHR where
+  showsPrec = enumShowsPrec enumPrefixQueueGlobalPriorityKHR
+                            showTableQueueGlobalPriorityKHR
+                            conNameQueueGlobalPriorityKHR
+                            (\(QueueGlobalPriorityKHR x) -> x)
+                            (showsPrec 11)
+
+instance Read QueueGlobalPriorityKHR where
+  readPrec = enumReadPrec enumPrefixQueueGlobalPriorityKHR
+                          showTableQueueGlobalPriorityKHR
+                          conNameQueueGlobalPriorityKHR
+                          QueueGlobalPriorityKHR
+
+
+type KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1
+
+-- No documentation found for TopLevel "VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION"
+pattern KHR_GLOBAL_PRIORITY_SPEC_VERSION :: forall a . Integral a => a
+pattern KHR_GLOBAL_PRIORITY_SPEC_VERSION = 1
+
+
+type KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority"
+
+-- No documentation found for TopLevel "VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME"
+pattern KHR_GLOBAL_PRIORITY_EXTENSION_NAME :: forall a . (Eq a, IsString a) => a
+pattern KHR_GLOBAL_PRIORITY_EXTENSION_NAME = "VK_KHR_global_priority"
+
diff --git a/src/Vulkan/Extensions/VK_KHR_global_priority.hs-boot b/src/Vulkan/Extensions/VK_KHR_global_priority.hs-boot
new file mode 100644
--- /dev/null
+++ b/src/Vulkan/Extensions/VK_KHR_global_priority.hs-boot
@@ -0,0 +1,197 @@
+{-# language CPP #-}
+-- | = Name
+--
+-- VK_KHR_global_priority - device extension
+--
+-- == VK_KHR_global_priority
+--
+-- [__Name String__]
+--     @VK_KHR_global_priority@
+--
+-- [__Extension Type__]
+--     Device extension
+--
+-- [__Registered Extension Number__]
+--     189
+--
+-- [__Revision__]
+--     1
+--
+-- [__Extension and Version Dependencies__]
+--
+--     -   Requires Vulkan 1.0
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_global_priority] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_global_priority extension>> >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2021-10-22
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector, AMD
+--
+--     -   Contributors to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority VK_EXT_global_priority>
+--
+--     -   Contributors to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_global_priority_query VK_EXT_global_priority_query>
+--
+-- == Description
+--
+-- In Vulkan, users can specify device-scope queue priorities. In some
+-- cases it may be useful to extend this concept to a system-wide scope.
+-- This device extension allows applications to query the global queue
+-- priorities supported by a queue family, and then set a priority when
+-- creating queues. The default queue priority is
+-- 'QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT'.
+--
+-- Implementations can report which global priority levels are treated
+-- differently by the implementation. It is intended primarily for use in
+-- system integration along with certain platform-specific priority
+-- enforcement rules.
+--
+-- The driver implementation will attempt to skew hardware resource
+-- allocation in favour of the higher-priority task. Therefore,
+-- higher-priority work may retain similar latency and throughput
+-- characteristics even if the system is congested with lower priority
+-- work.
+--
+-- The global priority level of a queue shall take precedence over the
+-- per-process queue priority
+-- ('Vulkan.Core10.Device.DeviceQueueCreateInfo'::@pQueuePriorities@).
+--
+-- Abuse of this feature may result in starving the rest of the system from
+-- hardware resources. Therefore, the driver implementation may deny
+-- requests to acquire a priority above the default priority
+-- ('QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT') if the caller does not have
+-- sufficient privileges. In this scenario
+-- 'Vulkan.Extensions.VK_EXT_global_priority.ERROR_NOT_PERMITTED_EXT' is
+-- returned.
+--
+-- The driver implementation may fail the queue allocation request if
+-- resources required to complete the operation have been exhausted (either
+-- by the same process or a different process). In this scenario
+-- 'Vulkan.Core10.Enums.Result.ERROR_INITIALIZATION_FAILED' is returned.
+--
+-- == New Structures
+--
+-- -   Extending 'Vulkan.Core10.Device.DeviceQueueCreateInfo':
+--
+--     -   'DeviceQueueGlobalPriorityCreateInfoKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceGlobalPriorityQueryFeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
+--
+--     -   'QueueFamilyGlobalPriorityPropertiesKHR'
+--
+-- == New Enums
+--
+-- -   'QueueGlobalPriorityKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_GLOBAL_PRIORITY_EXTENSION_NAME'
+--
+-- -   'KHR_GLOBAL_PRIORITY_SPEC_VERSION'
+--
+-- -   'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.Result.Result':
+--
+--     -   'Vulkan.Core10.Enums.Result.ERROR_NOT_PERMITTED_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR'
+--
+-- == Issues
+--
+-- 1) Can we additionally query whether a caller is permitted to acquire a
+-- specific global queue priority in this extension?
+--
+-- __RESOLVED__: No. Whether a caller has enough privilege goes with the
+-- OS, and the Vulkan driver cannot really guarantee that the privilege
+-- will not change in between this query and the actual queue creation
+-- call.
+--
+-- 2) If more than 1 queue using global priority is requested, is there a
+-- good way to know which queue is failing the device creation?
+--
+-- __RESOLVED__: No. There is not a good way at this moment, and it is also
+-- not quite actionable for the applications to know that because the
+-- information may not be accurate. Queue creation can fail because of
+-- runtime constraints like insufficient privilege or lack of resource, and
+-- the failure is not necessarily tied to that particular queue
+-- configuration requested.
+--
+-- == Version History
+--
+-- -   Revision 1, 2021-10-22 (Tobias Hector)
+--
+--     -   Initial draft
+--
+-- == See Also
+--
+-- 'Vulkan.Core10.APIConstants.MAX_GLOBAL_PRIORITY_SIZE_KHR',
+-- 'DeviceQueueGlobalPriorityCreateInfoKHR',
+-- 'PhysicalDeviceGlobalPriorityQueryFeaturesKHR',
+-- 'QueueFamilyGlobalPriorityPropertiesKHR', 'QueueGlobalPriorityKHR'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_global_priority Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_KHR_global_priority  ( DeviceQueueGlobalPriorityCreateInfoKHR
+                                                 , PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+                                                 , QueueFamilyGlobalPriorityPropertiesKHR
+                                                 , QueueGlobalPriorityKHR
+                                                 ) where
+
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (ToCStruct)
+import Data.Kind (Type)
+
+data DeviceQueueGlobalPriorityCreateInfoKHR
+
+instance ToCStruct DeviceQueueGlobalPriorityCreateInfoKHR
+instance Show DeviceQueueGlobalPriorityCreateInfoKHR
+
+instance FromCStruct DeviceQueueGlobalPriorityCreateInfoKHR
+
+
+data PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+
+instance ToCStruct PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+instance Show PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+
+instance FromCStruct PhysicalDeviceGlobalPriorityQueryFeaturesKHR
+
+
+data QueueFamilyGlobalPriorityPropertiesKHR
+
+instance ToCStruct QueueFamilyGlobalPriorityPropertiesKHR
+instance Show QueueFamilyGlobalPriorityPropertiesKHR
+
+instance FromCStruct QueueFamilyGlobalPriorityPropertiesKHR
+
+
+data QueueGlobalPriorityKHR
+
diff --git a/src/Vulkan/Extensions/VK_KHR_image_format_list.hs b/src/Vulkan/Extensions/VK_KHR_image_format_list.hs
--- a/src/Vulkan/Extensions/VK_KHR_image_format_list.hs
+++ b/src/Vulkan/Extensions/VK_KHR_image_format_list.hs
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_image_format_list Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_image_format_list Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs b/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs
--- a/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs
+++ b/src/Vulkan/Extensions/VK_KHR_imageless_framebuffer.hs
@@ -123,7 +123,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_imageless_framebuffer Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_imageless_framebuffer Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
--- a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
+++ b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs
@@ -158,7 +158,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_incremental_present.hs-boot
@@ -158,7 +158,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_incremental_present Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance1.hs b/src/Vulkan/Extensions/VK_KHR_maintenance1.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance1.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance1.hs
@@ -182,7 +182,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance1 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance1 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance2.hs b/src/Vulkan/Extensions/VK_KHR_maintenance2.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance2.hs
@@ -240,7 +240,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance3.hs b/src/Vulkan/Extensions/VK_KHR_maintenance3.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance3.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance3.hs
@@ -111,7 +111,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance3 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance3 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance4.hs b/src/Vulkan/Extensions/VK_KHR_maintenance4.hs
--- a/src/Vulkan/Extensions/VK_KHR_maintenance4.hs
+++ b/src/Vulkan/Extensions/VK_KHR_maintenance4.hs
@@ -21,6 +21,11 @@
 --
 --     -   Requires Vulkan 1.1
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Piers Daniell
@@ -33,6 +38,8 @@
 --
 -- [__Interactions and External Dependencies__]
 --
+--     -   Promoted to Vulkan 1.3 Core
+--
 --     -   Requires SPIR-V 1.2 for @LocalSizeId@
 --
 -- [__Contributors__]
@@ -68,7 +75,7 @@
 --     its handle valid while the created object is in use.
 --
 -- -   Add a new
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxBufferSize maxBufferSize>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-maxBufferSize maxBufferSize>
 --     implementation-defined limit for the maximum size
 --     'Vulkan.Core10.Handles.Buffer' that /can/ be created.
 --
@@ -134,14 +141,20 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR'
+--     -   'STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR'
+--     -   'STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Issues
 --
 -- None.
@@ -168,568 +181,81 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_maintenance4 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_maintenance4  ( getDeviceBufferMemoryRequirementsKHR
+module Vulkan.Extensions.VK_KHR_maintenance4  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR
+                                              , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR
+                                              , pattern STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR
+                                              , pattern STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR
+                                              , getDeviceBufferMemoryRequirementsKHR
                                               , getDeviceImageMemoryRequirementsKHR
                                               , getDeviceImageSparseMemoryRequirementsKHR
-                                              , DeviceBufferMemoryRequirementsKHR(..)
-                                              , DeviceImageMemoryRequirementsKHR(..)
-                                              , PhysicalDeviceMaintenance4FeaturesKHR(..)
-                                              , PhysicalDeviceMaintenance4PropertiesKHR(..)
+                                              , DeviceBufferMemoryRequirementsKHR
+                                              , DeviceImageMemoryRequirementsKHR
+                                              , PhysicalDeviceMaintenance4FeaturesKHR
+                                              , PhysicalDeviceMaintenance4PropertiesKHR
                                               , KHR_MAINTENANCE_4_SPEC_VERSION
                                               , pattern KHR_MAINTENANCE_4_SPEC_VERSION
                                               , KHR_MAINTENANCE_4_EXTENSION_NAME
                                               , pattern KHR_MAINTENANCE_4_EXTENSION_NAME
                                               ) where
 
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Exception.Base (bracket)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-import GHC.IO (throwIO)
-import GHC.Ptr (castPtr)
-import GHC.Ptr (nullFunPtr)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import Data.Word (Word32)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (withSomeCStruct)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Buffer (BufferCreateInfo)
-import Vulkan.Core10.Handles (Device)
-import Vulkan.Core10.Handles (Device(..))
-import Vulkan.Core10.Handles (Device(Device))
-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceBufferMemoryRequirementsKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceImageMemoryRequirementsKHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetDeviceImageSparseMemoryRequirementsKHR))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Device_T)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.Core10.Enums.ImageAspectFlagBits (ImageAspectFlagBits)
-import Vulkan.Core10.Image (ImageCreateInfo)
-import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (MemoryRequirements2)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.CStruct.Extends (SomeStruct(..))
-import Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2 (SparseImageMemoryRequirements2)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR))
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetDeviceBufferMemoryRequirementsKHR
-  :: FunPtr (Ptr Device_T -> Ptr DeviceBufferMemoryRequirementsKHR -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr DeviceBufferMemoryRequirementsKHR -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (getDeviceBufferMemoryRequirements)
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (getDeviceImageMemoryRequirements)
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (getDeviceImageSparseMemoryRequirements)
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceBufferMemoryRequirements)
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (DeviceImageMemoryRequirements)
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Features)
+import Vulkan.Core13.Promoted_From_VK_KHR_maintenance4 (PhysicalDeviceMaintenance4Properties)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES
 
--- | vkGetDeviceBufferMemoryRequirementsKHR - Returns the memory requirements
--- for specified Vulkan object
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
--- 'Vulkan.Core10.Handles.Device', 'DeviceBufferMemoryRequirementsKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
-getDeviceBufferMemoryRequirementsKHR :: forall a io
-                                      . (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io)
-                                     => -- | @device@ is the logical device intended to own the buffer.
-                                        --
-                                        -- #VUID-vkGetDeviceBufferMemoryRequirementsKHR-device-parameter# @device@
-                                        -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                        Device
-                                     -> -- | @pInfo@ is a pointer to a 'DeviceBufferMemoryRequirementsKHR' structure
-                                        -- containing parameters required for the memory requirements query.
-                                        --
-                                        -- #VUID-vkGetDeviceBufferMemoryRequirementsKHR-pInfo-parameter# @pInfo@
-                                        -- /must/ be a valid pointer to a valid 'DeviceBufferMemoryRequirementsKHR'
-                                        -- structure
-                                        ("info" ::: DeviceBufferMemoryRequirementsKHR)
-                                     -> io (MemoryRequirements2 a)
-getDeviceBufferMemoryRequirementsKHR device info = liftIO . evalContT $ do
-  let vkGetDeviceBufferMemoryRequirementsKHRPtr = pVkGetDeviceBufferMemoryRequirementsKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetDeviceBufferMemoryRequirementsKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceBufferMemoryRequirementsKHR is null" Nothing Nothing
-  let vkGetDeviceBufferMemoryRequirementsKHR' = mkVkGetDeviceBufferMemoryRequirementsKHR vkGetDeviceBufferMemoryRequirementsKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
-  lift $ traceAroundEvent "vkGetDeviceBufferMemoryRequirementsKHR" (vkGetDeviceBufferMemoryRequirementsKHR' (deviceHandle (device)) pInfo (forgetExtensions (pPMemoryRequirements)))
-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
-  pure $ (pMemoryRequirements)
 
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetDeviceImageMemoryRequirementsKHR
-  :: FunPtr (Ptr Device_T -> Ptr DeviceImageMemoryRequirementsKHR -> Ptr (SomeStruct MemoryRequirements2) -> IO ()) -> Ptr Device_T -> Ptr DeviceImageMemoryRequirementsKHR -> Ptr (SomeStruct MemoryRequirements2) -> IO ()
 
--- | vkGetDeviceImageMemoryRequirementsKHR - Returns the memory requirements
--- for specified Vulkan object
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
--- 'Vulkan.Core10.Handles.Device', 'DeviceImageMemoryRequirementsKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.MemoryRequirements2'
-getDeviceImageMemoryRequirementsKHR :: forall a io
-                                     . (Extendss MemoryRequirements2 a, PokeChain a, PeekChain a, MonadIO io)
-                                    => -- | @device@ is the logical device intended to own the image.
-                                       --
-                                       -- #VUID-vkGetDeviceImageMemoryRequirementsKHR-device-parameter# @device@
-                                       -- /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
-                                       Device
-                                    -> -- | @pInfo@ is a pointer to a 'DeviceImageMemoryRequirementsKHR' structure
-                                       -- containing parameters required for the memory requirements query.
-                                       --
-                                       -- #VUID-vkGetDeviceImageMemoryRequirementsKHR-pInfo-parameter# @pInfo@
-                                       -- /must/ be a valid pointer to a valid 'DeviceImageMemoryRequirementsKHR'
-                                       -- structure
-                                       ("info" ::: DeviceImageMemoryRequirementsKHR)
-                                    -> io (MemoryRequirements2 a)
-getDeviceImageMemoryRequirementsKHR device info = liftIO . evalContT $ do
-  let vkGetDeviceImageMemoryRequirementsKHRPtr = pVkGetDeviceImageMemoryRequirementsKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetDeviceImageMemoryRequirementsKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceImageMemoryRequirementsKHR is null" Nothing Nothing
-  let vkGetDeviceImageMemoryRequirementsKHR' = mkVkGetDeviceImageMemoryRequirementsKHR vkGetDeviceImageMemoryRequirementsKHRPtr
-  pInfo <- ContT $ withCStruct (info)
-  pPMemoryRequirements <- ContT (withZeroCStruct @(MemoryRequirements2 _))
-  lift $ traceAroundEvent "vkGetDeviceImageMemoryRequirementsKHR" (vkGetDeviceImageMemoryRequirementsKHR' (deviceHandle (device)) pInfo (forgetExtensions (pPMemoryRequirements)))
-  pMemoryRequirements <- lift $ peekCStruct @(MemoryRequirements2 _) pPMemoryRequirements
-  pure $ (pMemoryRequirements)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR"
+pattern STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS
 
 
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetDeviceImageSparseMemoryRequirementsKHR
-  :: FunPtr (Ptr Device_T -> Ptr DeviceImageMemoryRequirementsKHR -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()) -> Ptr Device_T -> Ptr DeviceImageMemoryRequirementsKHR -> Ptr Word32 -> Ptr SparseImageMemoryRequirements2 -> IO ()
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR"
+pattern STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS
 
--- | vkGetDeviceImageSparseMemoryRequirementsKHR - Query the memory
--- requirements for a sparse image
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetDeviceImageSparseMemoryRequirementsKHR-device-parameter#
---     @device@ /must/ be a valid 'Vulkan.Core10.Handles.Device' handle
---
--- -   #VUID-vkGetDeviceImageSparseMemoryRequirementsKHR-pInfo-parameter#
---     @pInfo@ /must/ be a valid pointer to a valid
---     'DeviceImageMemoryRequirementsKHR' structure
---
--- -   #VUID-vkGetDeviceImageSparseMemoryRequirementsKHR-pSparseMemoryRequirementCount-parameter#
---     @pSparseMemoryRequirementCount@ /must/ be a valid pointer to a
---     @uint32_t@ value
---
--- -   #VUID-vkGetDeviceImageSparseMemoryRequirementsKHR-pSparseMemoryRequirements-parameter#
---     If the value referenced by @pSparseMemoryRequirementCount@ is not
---     @0@, and @pSparseMemoryRequirements@ is not @NULL@,
---     @pSparseMemoryRequirements@ /must/ be a valid pointer to an array of
---     @pSparseMemoryRequirementCount@
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2'
---     structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
--- 'Vulkan.Core10.Handles.Device', 'DeviceImageMemoryRequirementsKHR',
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_memory_requirements2.SparseImageMemoryRequirements2'
-getDeviceImageSparseMemoryRequirementsKHR :: forall io
-                                           . (MonadIO io)
-                                          => -- | @device@ is the logical device intended to own the image.
-                                             Device
-                                          -> -- | @pInfo@ is a pointer to a 'DeviceImageMemoryRequirementsKHR' structure
-                                             -- containing parameters required for the memory requirements query.
-                                             ("info" ::: DeviceImageMemoryRequirementsKHR)
-                                          -> io (("sparseMemoryRequirements" ::: Vector SparseImageMemoryRequirements2))
-getDeviceImageSparseMemoryRequirementsKHR device info = liftIO . evalContT $ do
-  let vkGetDeviceImageSparseMemoryRequirementsKHRPtr = pVkGetDeviceImageSparseMemoryRequirementsKHR (case device of Device{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetDeviceImageSparseMemoryRequirementsKHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetDeviceImageSparseMemoryRequirementsKHR is null" Nothing Nothing
-  let vkGetDeviceImageSparseMemoryRequirementsKHR' = mkVkGetDeviceImageSparseMemoryRequirementsKHR vkGetDeviceImageSparseMemoryRequirementsKHRPtr
-  let device' = deviceHandle (device)
-  pInfo <- ContT $ withCStruct (info)
-  pPSparseMemoryRequirementCount <- ContT $ bracket (callocBytes @Word32 4) free
-  lift $ traceAroundEvent "vkGetDeviceImageSparseMemoryRequirementsKHR" (vkGetDeviceImageSparseMemoryRequirementsKHR' device' pInfo (pPSparseMemoryRequirementCount) (nullPtr))
-  pSparseMemoryRequirementCount <- lift $ peek @Word32 pPSparseMemoryRequirementCount
-  pPSparseMemoryRequirements <- ContT $ bracket (callocBytes @SparseImageMemoryRequirements2 ((fromIntegral (pSparseMemoryRequirementCount)) * 64)) free
-  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPSparseMemoryRequirements `advancePtrBytes` (i * 64) :: Ptr SparseImageMemoryRequirements2) . ($ ())) [0..(fromIntegral (pSparseMemoryRequirementCount)) - 1]
-  lift $ traceAroundEvent "vkGetDeviceImageSparseMemoryRequirementsKHR" (vkGetDeviceImageSparseMemoryRequirementsKHR' device' pInfo (pPSparseMemoryRequirementCount) ((pPSparseMemoryRequirements)))
-  pSparseMemoryRequirementCount' <- lift $ peek @Word32 pPSparseMemoryRequirementCount
-  pSparseMemoryRequirements' <- lift $ generateM (fromIntegral (pSparseMemoryRequirementCount')) (\i -> peekCStruct @SparseImageMemoryRequirements2 (((pPSparseMemoryRequirements) `advancePtrBytes` (64 * (i)) :: Ptr SparseImageMemoryRequirements2)))
-  pure $ (pSparseMemoryRequirements')
 
+-- No documentation found for TopLevel "vkGetDeviceBufferMemoryRequirementsKHR"
+getDeviceBufferMemoryRequirementsKHR = getDeviceBufferMemoryRequirements
 
--- | VkDeviceBufferMemoryRequirementsKHR - (None)
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
--- 'Vulkan.Core10.Buffer.BufferCreateInfo',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getDeviceBufferMemoryRequirementsKHR'
-data DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirementsKHR
-  { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Buffer.BufferCreateInfo'
-    -- structure containing parameters affecting creation of the buffer to
-    -- query.
-    --
-    -- #VUID-VkDeviceBufferMemoryRequirementsKHR-pCreateInfo-parameter#
-    -- @pCreateInfo@ /must/ be a valid pointer to a valid
-    -- 'Vulkan.Core10.Buffer.BufferCreateInfo' structure
-    createInfo :: SomeStruct BufferCreateInfo }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DeviceBufferMemoryRequirementsKHR)
-#endif
-deriving instance Show DeviceBufferMemoryRequirementsKHR
 
-instance ToCStruct DeviceBufferMemoryRequirementsKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DeviceBufferMemoryRequirementsKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pCreateInfo'' <- ContT @_ @_ @(Ptr (BufferCreateInfo '[])) $ \cont -> withSomeCStruct @BufferCreateInfo (createInfo) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (BufferCreateInfo _)))) pCreateInfo''
-    lift $ f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pCreateInfo'' <- ContT @_ @_ @(Ptr (BufferCreateInfo '[])) $ \cont -> withSomeCStruct @BufferCreateInfo ((SomeStruct zero)) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (BufferCreateInfo _)))) pCreateInfo''
-    lift $ f
+-- No documentation found for TopLevel "vkGetDeviceImageMemoryRequirementsKHR"
+getDeviceImageMemoryRequirementsKHR = getDeviceImageMemoryRequirements
 
-instance FromCStruct DeviceBufferMemoryRequirementsKHR where
-  peekCStruct p = do
-    pCreateInfo <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (BufferCreateInfo _))))
-    pure $ DeviceBufferMemoryRequirementsKHR
-             pCreateInfo
 
-instance Zero DeviceBufferMemoryRequirementsKHR where
-  zero = DeviceBufferMemoryRequirementsKHR
-           (SomeStruct zero)
+-- No documentation found for TopLevel "vkGetDeviceImageSparseMemoryRequirementsKHR"
+getDeviceImageSparseMemoryRequirementsKHR = getDeviceImageSparseMemoryRequirements
 
 
--- | VkDeviceImageMemoryRequirementsKHR - (None)
---
--- == Valid Usage
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06416# The
---     @pCreateInfo@::@pNext@ chain /must/ not contain a
---     'Vulkan.Extensions.VK_KHR_swapchain.ImageSwapchainCreateInfoKHR'
---     structure
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06417# If
---     @pCreateInfo@::@flags@ has
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
---     set then @planeAspect@ /must/ not be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_NONE_KHR'
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06418# If
---     @pCreateInfo@::@flags@ has
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
---     set then @planeAspect@ /must/ not be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_NONE_KHR'
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06419# If
---     @pCreateInfo@::@flags@ has
---     'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT'
---     set and if the @pCreateInfo@::@tiling@ is
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' or
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_OPTIMAL', then
---     @planeAspect@ /must/ be a single valid /format plane/ for the image
---     (that is, for a two-plane image @planeAspect@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     and for a three-plane image @planeAspect@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT')
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06420# If
---     @pCreateInfo@::@flags@ has
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
---     set and the @pCreateInfo@::@tiling@ is
---     'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT',
---     then @planeAspect@ /must/ be a single valid /memory plane/ for the
---     image (that is, @aspectMask@ /must/ specify a plane index that is
---     less than the
---     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.DrmFormatModifierPropertiesEXT'::@drmFormatModifierPlaneCount@
---     associated with the image’s @format@ and
---     'Vulkan.Extensions.VK_EXT_image_drm_format_modifier.ImageDrmFormatModifierPropertiesEXT'::@drmFormatModifier@)
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-sType-sType# @sType@ /must/
---     be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR'
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pNext-pNext# @pNext@ /must/
---     be @NULL@
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-parameter#
---     @pCreateInfo@ /must/ be a valid pointer to a valid
---     'Vulkan.Core10.Image.ImageCreateInfo' structure
---
--- -   #VUID-VkDeviceImageMemoryRequirementsKHR-planeAspect-parameter#
---     @planeAspect@ /must/ be a valid
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 VK_KHR_maintenance4>,
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits',
--- 'Vulkan.Core10.Image.ImageCreateInfo',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getDeviceImageMemoryRequirementsKHR',
--- 'getDeviceImageSparseMemoryRequirementsKHR'
-data DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirementsKHR
-  { -- | @pCreateInfo@ is a pointer to a 'Vulkan.Core10.Image.ImageCreateInfo'
-    -- structure containing parameters affecting creation of the image to
-    -- query.
-    createInfo :: SomeStruct ImageCreateInfo
-  , -- | @planeAspect@ is a
-    -- 'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits' value
-    -- specifying the aspect corresponding to the image plane to query. This
-    -- parameter is ignored unless @pCreateInfo@::@flags@ has
-    -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_DISJOINT_BIT' or
-    -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT'
-    -- set.
-    planeAspect :: ImageAspectFlagBits
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DeviceImageMemoryRequirementsKHR)
-#endif
-deriving instance Show DeviceImageMemoryRequirementsKHR
+-- No documentation found for TopLevel "VkDeviceBufferMemoryRequirementsKHR"
+type DeviceBufferMemoryRequirementsKHR = DeviceBufferMemoryRequirements
 
-instance ToCStruct DeviceImageMemoryRequirementsKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DeviceImageMemoryRequirementsKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pCreateInfo'' <- ContT @_ @_ @(Ptr (ImageCreateInfo '[])) $ \cont -> withSomeCStruct @ImageCreateInfo (createInfo) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _)))) pCreateInfo''
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageAspectFlagBits)) (planeAspect)
-    lift $ f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    pCreateInfo'' <- ContT @_ @_ @(Ptr (ImageCreateInfo '[])) $ \cont -> withSomeCStruct @ImageCreateInfo ((SomeStruct zero)) (cont . castPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _)))) pCreateInfo''
-    lift $ poke ((p `plusPtr` 24 :: Ptr ImageAspectFlagBits)) (zero)
-    lift $ f
 
-instance FromCStruct DeviceImageMemoryRequirementsKHR where
-  peekCStruct p = do
-    pCreateInfo <- peekSomeCStruct . forgetExtensions =<< peek ((p `plusPtr` 16 :: Ptr (Ptr (ImageCreateInfo _))))
-    planeAspect <- peek @ImageAspectFlagBits ((p `plusPtr` 24 :: Ptr ImageAspectFlagBits))
-    pure $ DeviceImageMemoryRequirementsKHR
-             pCreateInfo planeAspect
-
-instance Zero DeviceImageMemoryRequirementsKHR where
-  zero = DeviceImageMemoryRequirementsKHR
-           (SomeStruct zero)
-           zero
+-- No documentation found for TopLevel "VkDeviceImageMemoryRequirementsKHR"
+type DeviceImageMemoryRequirementsKHR = DeviceImageMemoryRequirements
 
 
--- | VkPhysicalDeviceMaintenance4FeaturesKHR - Structure describing whether
--- the implementation supports maintenance4 functionality
---
--- = Members
---
--- This structure describes the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceMaintenance4FeaturesKHR' 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. 'PhysicalDeviceMaintenance4FeaturesKHR' /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_KHR_maintenance4 VK_KHR_maintenance4>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4FeaturesKHR
-  { -- | #features-maintenance4# @maintenance4@ indicates that the implementation
-    -- supports the following:
-    --
-    -- -   The application /may/ destroy a
-    --     'Vulkan.Core10.Handles.PipelineLayout' object immediately after
-    --     using it to create another object.
-    --
-    -- -   @LocalSizeId@ /can/ be used as an alternative to @LocalSize@ to
-    --     specify the local workgroup size with specialization constants.
-    --
-    -- -   Images created with identical creation parameters will always have
-    --     the same alignment requirements.
-    --
-    -- -   The size memory requirement of a buffer or image is never greater
-    --     than that of another buffer or image created with a greater or equal
-    --     size.
-    --
-    -- -   Push constants do not have to be initialized before they are
-    --     dynamically accessed.
-    --
-    -- -   The interface matching rules allow a larger output vector to match
-    --     with a smaller input vector, with additional values being discarded.
-    maintenance4 :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMaintenance4FeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceMaintenance4FeaturesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance4FeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMaintenance4FeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (maintenance4))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceMaintenance4FeaturesKHR where
-  peekCStruct p = do
-    maintenance4 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceMaintenance4FeaturesKHR
-             (bool32ToBool maintenance4)
-
-instance Storable PhysicalDeviceMaintenance4FeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMaintenance4FeaturesKHR where
-  zero = PhysicalDeviceMaintenance4FeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceMaintenance4FeaturesKHR"
+type PhysicalDeviceMaintenance4FeaturesKHR = PhysicalDeviceMaintenance4Features
 
 
--- | VkPhysicalDeviceMaintenance4PropertiesKHR - Structure describing various
--- implementation-defined properties introduced with VK_KHR_maintenance4
---
--- = Description
---
--- If the 'PhysicalDeviceMaintenance4PropertiesKHR' 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_KHR_maintenance4 VK_KHR_maintenance4>,
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4PropertiesKHR
-  { -- | #limits-maxBufferSize# @maxBufferSize@ is the maximum size
-    -- 'Vulkan.Core10.Handles.Buffer' that /can/ be created.
-    maxBufferSize :: DeviceSize }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceMaintenance4PropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceMaintenance4PropertiesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance4PropertiesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceMaintenance4PropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (maxBufferSize)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct PhysicalDeviceMaintenance4PropertiesKHR where
-  peekCStruct p = do
-    maxBufferSize <- peek @DeviceSize ((p `plusPtr` 16 :: Ptr DeviceSize))
-    pure $ PhysicalDeviceMaintenance4PropertiesKHR
-             maxBufferSize
-
-instance Storable PhysicalDeviceMaintenance4PropertiesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceMaintenance4PropertiesKHR where
-  zero = PhysicalDeviceMaintenance4PropertiesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceMaintenance4PropertiesKHR"
+type PhysicalDeviceMaintenance4PropertiesKHR = PhysicalDeviceMaintenance4Properties
 
 
 type KHR_MAINTENANCE_4_SPEC_VERSION = 2
diff --git a/src/Vulkan/Extensions/VK_KHR_maintenance4.hs-boot b/src/Vulkan/Extensions/VK_KHR_maintenance4.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_maintenance4.hs-boot
+++ /dev/null
@@ -1,215 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_maintenance4 - device extension
---
--- == VK_KHR_maintenance4
---
--- [__Name String__]
---     @VK_KHR_maintenance4@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     414
---
--- [__Revision__]
---     2
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.1
---
--- [__Contact__]
---
---     -   Piers Daniell
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_maintenance4] @pdaniell-nv%0A<<Here describe the issue or question you have about the VK_KHR_maintenance4 extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2021-10-25
---
--- [__Interactions and External Dependencies__]
---
---     -   Requires SPIR-V 1.2 for @LocalSizeId@
---
--- [__Contributors__]
---
---     -   Lionel Duc, NVIDIA
---
---     -   Jason Ekstrand, Intel
---
---     -   Spencer Fricke, Samsung
---
---     -   Tobias Hector, AMD
---
---     -   Lionel Landwerlin, Intel
---
---     -   Graeme Leese, Broadcom
---
---     -   Tom Olson, Arm
---
---     -   Stu Smith, AMD
---
---     -   Yiwei Zhang, Google
---
--- == Description
---
--- @VK_KHR_maintenance4@ adds a collection of minor features, none of which
--- would warrant an entire extension of their own.
---
--- The new features are as follows:
---
--- -   Allow the application to destroy their
---     'Vulkan.Core10.Handles.PipelineLayout' object immediately after it
---     was used to create another object. It is no longer necessary to keep
---     its handle valid while the created object is in use.
---
--- -   Add a new
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxBufferSize maxBufferSize>
---     implementation-defined limit for the maximum size
---     'Vulkan.Core10.Handles.Buffer' that /can/ be created.
---
--- -   Add support for the SPIR-V 1.2 @LocalSizeId@ execution mode, which
---     can be used as an alternative to @LocalSize@ to specify the local
---     workgroup size with specialization constants.
---
--- -   Add a guarantee that images created with identical creation
---     parameters will always have the same alignment requirements.
---
--- -   Add new 'getDeviceBufferMemoryRequirementsKHR',
---     'getDeviceImageMemoryRequirementsKHR', and
---     'getDeviceImageSparseMemoryRequirementsKHR' to allow the application
---     to query the image memory requirements without having to create an
---     image object and query it.
---
--- -   Relax the requirement that push constants must be initialized before
---     they are dynamically accessed.
---
--- -   Relax the interface matching rules to allow a larger output vector
---     to match with a smaller input vector, with additional values being
---     discarded.
---
--- -   Add a guarantee for buffer memory requirement that the size memory
---     requirement is never greater than the result of aligning create size
---     with the alignment memory requirement.
---
--- == New Commands
---
--- -   'getDeviceBufferMemoryRequirementsKHR'
---
--- -   'getDeviceImageMemoryRequirementsKHR'
---
--- -   'getDeviceImageSparseMemoryRequirementsKHR'
---
--- == New Structures
---
--- -   'DeviceBufferMemoryRequirementsKHR'
---
--- -   'DeviceImageMemoryRequirementsKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceMaintenance4FeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceMaintenance4PropertiesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_MAINTENANCE_4_EXTENSION_NAME'
---
--- -   'KHR_MAINTENANCE_4_SPEC_VERSION'
---
--- -   Extending
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.ImageAspectFlagBits':
---
---     -   'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_NONE_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR'
---
--- == Issues
---
--- None.
---
--- == Version History
---
--- -   Revision 1, 2021-08-18 (Piers Daniell)
---
---     -   Internal revisions
---
--- -   Revision 2, 2021-10-25 (Yiwei Zhang)
---
---     -   More guarantees on buffer memory requirements
---
--- == See Also
---
--- 'DeviceBufferMemoryRequirementsKHR', 'DeviceImageMemoryRequirementsKHR',
--- 'PhysicalDeviceMaintenance4FeaturesKHR',
--- 'PhysicalDeviceMaintenance4PropertiesKHR',
--- 'getDeviceBufferMemoryRequirementsKHR',
--- 'getDeviceImageMemoryRequirementsKHR',
--- 'getDeviceImageSparseMemoryRequirementsKHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_maintenance4 Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_maintenance4  ( DeviceBufferMemoryRequirementsKHR
-                                              , DeviceImageMemoryRequirementsKHR
-                                              , PhysicalDeviceMaintenance4FeaturesKHR
-                                              , PhysicalDeviceMaintenance4PropertiesKHR
-                                              ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data DeviceBufferMemoryRequirementsKHR
-
-instance ToCStruct DeviceBufferMemoryRequirementsKHR
-instance Show DeviceBufferMemoryRequirementsKHR
-
-instance FromCStruct DeviceBufferMemoryRequirementsKHR
-
-
-data DeviceImageMemoryRequirementsKHR
-
-instance ToCStruct DeviceImageMemoryRequirementsKHR
-instance Show DeviceImageMemoryRequirementsKHR
-
-instance FromCStruct DeviceImageMemoryRequirementsKHR
-
-
-data PhysicalDeviceMaintenance4FeaturesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance4FeaturesKHR
-instance Show PhysicalDeviceMaintenance4FeaturesKHR
-
-instance FromCStruct PhysicalDeviceMaintenance4FeaturesKHR
-
-
-data PhysicalDeviceMaintenance4PropertiesKHR
-
-instance ToCStruct PhysicalDeviceMaintenance4PropertiesKHR
-instance Show PhysicalDeviceMaintenance4PropertiesKHR
-
-instance FromCStruct PhysicalDeviceMaintenance4PropertiesKHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_multiview.hs b/src/Vulkan/Extensions/VK_KHR_multiview.hs
--- a/src/Vulkan/Extensions/VK_KHR_multiview.hs
+++ b/src/Vulkan/Extensions/VK_KHR_multiview.hs
@@ -66,7 +66,7 @@
 -- and gives implementations freedom to render the views in the most
 -- efficient way possible. This is done with a multiview configuration
 -- specified during
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass render pass>
 -- creation with the
 -- 'Vulkan.Core11.Promoted_From_VK_KHR_multiview.RenderPassMultiviewCreateInfo'
 -- passed into 'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pNext@.
@@ -124,11 +124,11 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewindex ViewIndex>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewindex ViewIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-MultiView MultiView>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MultiView MultiView>
 --
 -- == Version History
 --
@@ -145,7 +145,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_multiview Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_multiview Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_performance_query.hs b/src/Vulkan/Extensions/VK_KHR_performance_query.hs
--- a/src/Vulkan/Extensions/VK_KHR_performance_query.hs
+++ b/src/Vulkan/Extensions/VK_KHR_performance_query.hs
@@ -116,7 +116,7 @@
 --     -   'QueryPoolPerformanceCreateInfoKHR'
 --
 -- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
---     'Vulkan.Extensions.VK_KHR_synchronization2.SubmitInfo2KHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2':
 --
 --     -   'PerformanceQuerySubmitInfoKHR'
 --
@@ -473,7 +473,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -1203,7 +1203,7 @@
 --
 -- -   #VUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-performanceCounterQueryPools performanceCounterQueryPools>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-performanceCounterQueryPools performanceCounterQueryPools>
 --     feature /must/ be enabled
 --
 -- -   #VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321#
diff --git a/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot b/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_performance_query.hs-boot
@@ -116,7 +116,7 @@
 --     -   'QueryPoolPerformanceCreateInfoKHR'
 --
 -- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
---     'Vulkan.Extensions.VK_KHR_synchronization2.SubmitInfo2KHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2':
 --
 --     -   'PerformanceQuerySubmitInfoKHR'
 --
@@ -473,7 +473,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_performance_query Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs
@@ -172,7 +172,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -312,7 +312,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
 --     /must/ be enabled
 --
 -- -   #VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271#
@@ -410,7 +410,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
 --     /must/ be enabled
 --
 -- -   #VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273#
@@ -519,7 +519,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineExecutableInfo pipelineExecutableInfo>
 --     /must/ be enabled
 --
 -- -   #VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277#
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_executable_properties.hs-boot
@@ -172,7 +172,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_executable_properties Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -78,7 +78,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot b/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_pipeline_library.hs-boot
@@ -78,7 +78,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_pipeline_library Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs
--- a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs
+++ b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -203,13 +203,13 @@
   { -- | #features-constantAlphaColorBlendFactors#
     -- @constantAlphaColorBlendFactors@ indicates whether this implementation
     -- supports constant /alpha/
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blendfactors>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blendfactors>
     -- used as source or destination /color/
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#framebuffer-blending>.
     constantAlphaColorBlendFactors :: Bool
   , -- | #features-events# @events@ indicates whether this implementation
     -- supports synchronization using
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-events>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-events>.
     events :: Bool
   , -- | #features-imageViewFormatReinterpretation#
     -- @imageViewFormatReinterpretation@ indicates whether this implementation
@@ -236,56 +236,56 @@
   , -- | #features-mutableComparisonSamplers# @mutableComparisonSamplers@
     -- indicates whether this implementation allows descriptors with comparison
     -- samplers to be
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-updates updated>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-updates updated>.
     mutableComparisonSamplers :: Bool
   , -- | #features-pointPolygons# @pointPolygons@ indicates whether this
     -- implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast>
     -- using a /point/
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-polygonmode>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-polygonmode>.
     pointPolygons :: Bool
   , -- | #features-samplerMipLodBias# @samplerMipLodBias@ indicates whether this
     -- implementation supports setting a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers-mipLodBias mipmap LOD bias value>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers-mipLodBias mipmap LOD bias value>
     -- when
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#samplers creating a sampler>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#samplers creating a sampler>.
     samplerMipLodBias :: Bool
   , -- | #features-separateStencilMaskRef# @separateStencilMaskRef@ indicates
     -- whether this implementation supports separate front and back
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-stencil>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-stencil>
     -- reference values.
     separateStencilMaskRef :: Bool
   , -- | #features-shaderSampleRateInterpolationFunctions#
     -- @shaderSampleRateInterpolationFunctions@ indicates whether this
     -- implementation supports fragment shaders which use the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-InterpolationFunction InterpolationFunction>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-InterpolationFunction InterpolationFunction>
     -- capability and the extended instructions @InterpolateAtCentroid@,
     -- @InterpolateAtOffset@, and @InterpolateAtSample@ from the @GLSL.std.450@
     -- extended instruction set. This member is only meaningful if the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-sampleRateShading sampleRateShading>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-sampleRateShading sampleRateShading>
     -- feature is supported.
     shaderSampleRateInterpolationFunctions :: Bool
   , -- | #features-tessellationIsolines# @tessellationIsolines@ indicates whether
     -- this implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation-isoline-tessellation isoline output>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation-isoline-tessellation isoline output>
     -- from the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation>
     -- stage of a graphics pipeline. This member is only meaningful if
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
     -- are supported.
     tessellationIsolines :: Bool
   , -- | #features-tessellationPointMode# @tessellationPointMode@ indicates
     -- whether this implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation-point-mode point output>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation-point-mode point output>
     -- from the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#tessellation>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#tessellation>
     -- stage of a graphics pipeline. This member is only meaningful if
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
     -- are supported.
     tessellationPointMode :: Bool
   , -- | #features-triangleFans# @triangleFans@ indicates whether this
     -- implementation supports
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-triangle-fans>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-triangle-fans>
     -- primitive topology.
     triangleFans :: Bool
   , -- | #features-vertexAttributeAccessBeyondStride#
diff --git a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_portability_subset.hs-boot
@@ -136,7 +136,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_portability_subset Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_present_id.hs b/src/Vulkan/Extensions/VK_KHR_present_id.hs
--- a/src/Vulkan/Extensions/VK_KHR_present_id.hs
+++ b/src/Vulkan/Extensions/VK_KHR_present_id.hs
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_id Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -219,7 +219,7 @@
 -- queued by a call to
 -- 'Vulkan.Extensions.VK_KHR_swapchain.queuePresentKHR', an identifier
 -- needs to be associated with them. When the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-presentId presentId>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentId presentId>
 -- feature is enabled, applications /can/ include the 'PresentIdKHR'
 -- structure in the @pNext@ chain of the
 -- 'Vulkan.Extensions.VK_KHR_swapchain.PresentInfoKHR' structure to supply
diff --git a/src/Vulkan/Extensions/VK_KHR_present_id.hs-boot b/src/Vulkan/Extensions/VK_KHR_present_id.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_present_id.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_present_id.hs-boot
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_id Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_id Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_present_wait.hs b/src/Vulkan/Extensions/VK_KHR_present_wait.hs
--- a/src/Vulkan/Extensions/VK_KHR_present_wait.hs
+++ b/src/Vulkan/Extensions/VK_KHR_present_wait.hs
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_wait Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -277,7 +277,7 @@
 --     in the retired state
 --
 -- -   #VUID-vkWaitForPresentKHR-presentWait-06234# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-presentWait presentWait>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentWait presentWait>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Vulkan/Extensions/VK_KHR_present_wait.hs-boot b/src/Vulkan/Extensions/VK_KHR_present_wait.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_present_wait.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_present_wait.hs-boot
@@ -135,7 +135,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_present_wait Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_present_wait Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs b/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs
--- a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs
+++ b/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_push_descriptor Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -208,15 +208,15 @@
 -- When a command buffer begins recording, all push descriptors are
 -- undefined. Push descriptors /can/ be updated incrementally and cause
 -- shaders to use the updated descriptors for subsequent
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-bindpoint-commands bound pipeline commands>
 -- with the pipeline type set by @pipelineBindPoint@ until the descriptor
 -- is overwritten, or else until the set is disturbed as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#descriptorsets-compatibility Pipeline Layout Compatibility>.
 -- When the set is disturbed or push descriptors with a different
 -- descriptor set layout are set, all push descriptors are undefined.
 --
 -- Push descriptors that are
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-staticuse statically used>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-staticuse statically used>
 -- by a pipeline /must/ not be undefined at the time that a drawing or
 -- dispatching command is recorded to execute using that pipeline. This
 -- includes immutable sampler descriptors, which /must/ be pushed before
diff --git a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot b/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_push_descriptor.hs-boot
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_push_descriptor Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_push_descriptor Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_query.hs b/src/Vulkan/Extensions/VK_KHR_ray_query.hs
--- a/src/Vulkan/Extensions/VK_KHR_ray_query.hs
+++ b/src/Vulkan/Extensions/VK_KHR_ray_query.hs
@@ -167,9 +167,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
 --
 -- == Sample Code
 --
@@ -240,7 +240,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_query.hs-boot b/src/Vulkan/Extensions/VK_KHR_ray_query.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_ray_query.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_ray_query.hs-boot
@@ -167,9 +167,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayQueryKHR RayQueryKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
 --
 -- == Sample Code
 --
@@ -240,7 +240,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_query Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -44,13 +44,13 @@
 --         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_ray_tracing.txt GLSL_EXT_ray_tracing>
 --
 --     -   This extension interacts with
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan 1.2>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#versions-1.2 Vulkan 1.2>
 --         and @VK_KHR_vulkan_memory_model@, adding the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-related shader-call-related>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-related shader-call-related>
 --         relation of invocations,
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-order shader-call-order>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-order shader-call-order>
 --         partial order of dynamic instances of instructions, and the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
 --         scope.
 --
 --     -   This extension interacts with @VK_KHR_pipeline_library@,
@@ -287,43 +287,43 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
 --
 -- -   (modified)@PrimitiveId@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
 --
 -- == Issues
 --
@@ -345,7 +345,7 @@
 --
 -- -   removed vkCompileDeferredNV compilation functionality and replaced
 --     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations deferred host operations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations deferred host operations>
 --     interactions for ray tracing
 --
 -- -   added 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure
@@ -370,17 +370,17 @@
 --     device build
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-library pipeline library>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-library pipeline library>
 --     support for ray tracing
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-watertight watertightness guarantees>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-traversal-watertight watertightness guarantees>
 --
 -- -   added no-null-shader pipeline flags
 --     (@VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_*_SHADERS_BIT_KHR@)
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-shader-call memory model interactions>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-shader-call memory model interactions>
 --     with ray tracing and define how subgroups work and can be repacked
 --
 -- (2) Can you give a more detailed comparision of differences and
@@ -706,7 +706,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -840,7 +840,7 @@
 import Vulkan.Core10.Handles (PipelineCache)
 import Vulkan.Core10.Handles (PipelineCache(..))
 import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
 import Vulkan.Core10.Pipeline (PipelineDynamicStateCreateInfo)
 import Vulkan.Core10.Handles (PipelineLayout)
 import Vulkan.Extensions.VK_KHR_pipeline_library (PipelineLibraryCreateInfoKHR)
@@ -904,7 +904,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysKHR-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -960,7 +960,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysKHR-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -968,7 +968,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysKHR-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -1626,7 +1626,7 @@
 --
 -- -   #VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903# If
 --     @pipelineCache@ was created with
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
 --     host access to @pipelineCache@ /must/ be
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
 --
@@ -1640,13 +1640,13 @@
 --     @deferredOperation@ /must/ be complete
 --
 -- -   #VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipeline rayTracingPipeline>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587# If
 --     @deferredOperation@ is not 'Vulkan.Core10.APIConstants.NULL_HANDLE',
 --     the @flags@ member of elements of @pCreateInfos@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
 --
 -- == Valid Usage (Implicit)
 --
@@ -1697,7 +1697,7 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.OPERATION_NOT_DEFERRED_KHR'
 --
---     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
@@ -1720,12 +1720,12 @@
                                 Device
                              -> -- | @deferredOperation@ is 'Vulkan.Core10.APIConstants.NULL_HANDLE' or the
                                 -- handle of a valid 'Vulkan.Extensions.Handles.DeferredOperationKHR'
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations-requesting request deferral>
                                 -- object for this command.
                                 DeferredOperationKHR
                              -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
                                 -- indicating that pipeline caching is disabled, or the handle of a valid
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>
                                 -- object, in which case use of that cache is enabled for the duration of
                                 -- the command.
                                 PipelineCache
@@ -1733,7 +1733,7 @@
                                 -- 'RayTracingPipelineCreateInfoKHR' structures.
                                 ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoKHR))
                              -> -- | @pAllocator@ controls host memory allocation as described in the
-                                -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                 -- chapter.
                                 ("allocator" ::: Maybe AllocationCallbacks)
                              -> io (Result, ("pipelines" ::: Vector Pipeline))
@@ -1810,7 +1810,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -1866,7 +1866,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -1874,7 +1874,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -2210,7 +2210,7 @@
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect ::rayTracingPipelineTraceRaysIndirect>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipelineTraceRaysIndirect ::rayTracingPipelineTraceRaysIndirect>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951#
@@ -2398,7 +2398,7 @@
 -- set in
 -- 'Vulkan.Core10.Pipeline.PipelineDynamicStateCreateInfo'::@pDynamicStates@.
 -- Otherwise, the stack size is computed as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
 --
 -- == Valid Usage
 --
@@ -2643,7 +2643,7 @@
 --
 -- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
 -- described in more detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
 --
 -- When
 -- 'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_LIBRARY_BIT_KHR'
@@ -2669,7 +2669,7 @@
 -- The default stack size for a pipeline if
 -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR'
 -- is not provided is computed as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-pipeline-stack Ray Tracing Pipeline Stack>.
 --
 -- == Valid Usage
 --
@@ -2724,9 +2724,9 @@
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
 --     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 --     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425# If @flags@ does
 --     not include
@@ -2845,20 +2845,20 @@
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR'
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTraversalPrimitiveCulling rayTraversalPrimitiveCulling>
 --     feature is not enabled, @flags@ /must/ not include
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR'
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598# If @flags@
 --     includes
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR',
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay rayTracingPipelineShaderGroupHandleCaptureReplay>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-rayTracingPipelineShaderGroupHandleCaptureReplay rayTracingPipelineShaderGroupHandleCaptureReplay>
 --     /must/ be enabled
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599#
@@ -2889,7 +2889,7 @@
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext# @pNext@ /must/
 --     be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique# The @sType@
 --     value of each struct in the @pNext@ chain /must/ be unique
@@ -2964,7 +2964,7 @@
     -- pipeline.
     groups :: Vector RayTracingShaderGroupCreateInfoKHR
   , -- | @maxPipelineRayRecursionDepth@ is the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>
     -- of shaders executed by this pipeline.
     maxPipelineRayRecursionDepth :: Word32
   , -- | @pLibraryInfo@ is a pointer to a
@@ -3003,7 +3003,7 @@
   getNext RayTracingPipelineCreateInfoKHR{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoKHR e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
     | otherwise = Nothing
 
 instance (Extendss RayTracingPipelineCreateInfoKHR es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoKHR es) where
@@ -3105,7 +3105,7 @@
 -- -   #features-rayTracingPipeline# @rayTracingPipeline@ indicates whether
 --     the implementation supports the ray tracing pipeline functionality.
 --     See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing Ray Tracing>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing Ray Tracing>.
 --
 -- -   #features-rayTracingPipelineShaderGroupHandleCaptureReplay#
 --     @rayTracingPipelineShaderGroupHandleCaptureReplay@ indicates whether
@@ -3128,7 +3128,7 @@
 -- -   #features-rayTraversalPrimitiveCulling#
 --     @rayTraversalPrimitiveCulling@ indicates whether the implementation
 --     supports
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-traversal-culling-primitive primitive culling during ray traversal>.
 --
 -- If the 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure is
 -- included in the @pNext@ chain of the
@@ -3508,7 +3508,7 @@
 -- bytes used by any block declared in the @HitAttributeKHR@ storage class.
 -- As variables in these storage classes do not have explicit offsets, the
 -- size should be calculated as if each variable has a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-alignment-requirements scalar alignment>
 -- equal to the largest scalar alignment of any of the block’s members.
 --
 -- Note
diff --git a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_ray_tracing_pipeline.hs-boot
@@ -44,13 +44,13 @@
 --         <https://github.com/KhronosGroup/GLSL/blob/master/extensions/ext/GLSL_EXT_ray_tracing.txt GLSL_EXT_ray_tracing>
 --
 --     -   This extension interacts with
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.2 Vulkan 1.2>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#versions-1.2 Vulkan 1.2>
 --         and @VK_KHR_vulkan_memory_model@, adding the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-related shader-call-related>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-related shader-call-related>
 --         relation of invocations,
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-call-order shader-call-order>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shader-call-order shader-call-order>
 --         partial order of dynamic instances of instructions, and the
---         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
+--         <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-shadercall ShaderCallKHR>
 --         scope.
 --
 --     -   This extension interacts with @VK_KHR_pipeline_library@,
@@ -287,43 +287,43 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raygeometryindex RayGeometryIndexKHR>
 --
 -- -   (modified)@PrimitiveId@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingKHR RayTracingKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTraversalPrimitiveCullingKHR RayTraversalPrimitiveCullingKHR>
 --
 -- == Issues
 --
@@ -345,7 +345,7 @@
 --
 -- -   removed vkCompileDeferredNV compilation functionality and replaced
 --     with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#deferred-host-operations deferred host operations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#deferred-host-operations deferred host operations>
 --     interactions for ray tracing
 --
 -- -   added 'PhysicalDeviceRayTracingPipelineFeaturesKHR' structure
@@ -370,17 +370,17 @@
 --     device build
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-library pipeline library>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-library pipeline library>
 --     support for ray tracing
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-traversal-watertight watertightness guarantees>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-traversal-watertight watertightness guarantees>
 --
 -- -   added no-null-shader pipeline flags
 --     (@VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_*_SHADERS_BIT_KHR@)
 --
 -- -   added
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-shader-call memory model interactions>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-shader-call memory model interactions>
 --     with ray tracing and define how subgroups work and can be repacked
 --
 -- (2) Can you give a more detailed comparision of differences and
@@ -706,7 +706,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_relaxed_block_layout.hs b/src/Vulkan/Extensions/VK_KHR_relaxed_block_layout.hs
--- a/src/Vulkan/Extensions/VK_KHR_relaxed_block_layout.hs
+++ b/src/Vulkan/Extensions/VK_KHR_relaxed_block_layout.hs
@@ -54,7 +54,7 @@
 -- For example, placing a vector of three floats at an offset of 16×N + 4.
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-resources-layout Offset and Stride Assignment>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-resources-layout Offset and Stride Assignment>
 -- for details.
 --
 -- == Promotion to Vulkan 1.1
@@ -80,7 +80,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_relaxed_block_layout Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_relaxed_block_layout Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs b/src/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs
--- a/src/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs
+++ b/src/Vulkan/Extensions/VK_KHR_sampler_mirror_clamp_to_edge.hs
@@ -144,7 +144,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_sampler_mirror_clamp_to_edge Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs b/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
--- a/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
+++ b/src/Vulkan/Extensions/VK_KHR_sampler_ycbcr_conversion.hs
@@ -392,7 +392,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_sampler_ycbcr_conversion Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_separate_depth_stencil_layouts.hs b/src/Vulkan/Extensions/VK_KHR_separate_depth_stencil_layouts.hs
--- a/src/Vulkan/Extensions/VK_KHR_separate_depth_stencil_layouts.hs
+++ b/src/Vulkan/Extensions/VK_KHR_separate_depth_stencil_layouts.hs
@@ -128,7 +128,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_separate_depth_stencil_layouts Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_separate_depth_stencil_layouts Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_atomic_int64.hs b/src/Vulkan/Extensions/VK_KHR_shader_atomic_int64.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_atomic_int64.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_atomic_int64.hs
@@ -93,7 +93,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-Int64Atomics Int64Atomics>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-Int64Atomics Int64Atomics>
 --
 -- == Version History
 --
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_atomic_int64 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_atomic_int64 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs
@@ -86,7 +86,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
 --
 -- == Version History
 --
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_shader_clock.hs-boot
@@ -86,7 +86,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderClockKHR ShaderClockKHR>
 --
 -- == Version History
 --
@@ -101,7 +101,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_clock Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs b/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_draw_parameters.hs
@@ -96,7 +96,7 @@
 --
 -- All functionality in this extension is included in core Vulkan 1.1,
 -- however a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shaderDrawParameters feature bit was added>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shaderDrawParameters feature bit was added>
 -- to distinguish whether it is actually available or not.
 --
 -- == New Enum Constants
@@ -107,15 +107,15 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-baseinstance BaseInstance>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-baseinstance BaseInstance>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-basevertex BaseVertex>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-basevertex BaseVertex>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-drawindex DrawIndex>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-drawindex DrawIndex>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DrawParameters DrawParameters>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DrawParameters DrawParameters>
 --
 -- == Issues
 --
@@ -149,7 +149,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_draw_parameters Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_draw_parameters Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_float16_int8.hs b/src/Vulkan/Extensions/VK_KHR_shader_float16_int8.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_float16_int8.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_float16_int8.hs
@@ -78,7 +78,7 @@
 -- requirements for half-precision floating-point SPIR-V operations. This
 -- extension does not enable use of 8-bit integer types or 16-bit
 -- floating-point types in any
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-iointerfaces shader input and output interfaces>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-iointerfaces shader input and output interfaces>
 -- and therefore does not supersede the @VK_KHR_8bit_storage@ or
 -- @VK_KHR_16bit_storage@ extensions.
 --
@@ -126,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float16_int8 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_float16_int8 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs b/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_float_controls.hs
@@ -105,15 +105,15 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DenormPreserve DenormPreserve>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DenormPreserve DenormPreserve>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DenormFlushToZero DenormFlushToZero>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DenormFlushToZero DenormFlushToZero>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-SignedZeroInfNanPreserve SignedZeroInfNanPreserve>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SignedZeroInfNanPreserve SignedZeroInfNanPreserve>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTE RoundingModeRTE>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTE RoundingModeRTE>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTZ RoundingModeRTZ>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RoundingModeRTZ RoundingModeRTZ>
 --
 -- == Issues
 --
@@ -212,7 +212,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_float_controls Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_float_controls Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_integer_dot_product.hs b/src/Vulkan/Extensions/VK_KHR_shader_integer_dot_product.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_integer_dot_product.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_integer_dot_product.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Kevin Petit
@@ -38,6 +43,8 @@
 --
 -- [__Interactions and External Dependencies__]
 --
+--     -   Promoted to Vulkan 1.3 Core
+--
 --     -   This extension requires
 --         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_integer_dot_product.html SPV_KHR_integer_dot_product>.
 --
@@ -106,19 +113,25 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInputAllKHR DotProductInputAllKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInputAllKHR DotProductInputAllKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitKHR DotProductInput4x8BitKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitKHR DotProductInput4x8BitKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitPackedKHR DotProductInput4x8BitPackedKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitPackedKHR DotProductInput4x8BitPackedKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductKHR DotProductKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductKHR DotProductKHR>
 --
 -- == Version History
 --
@@ -134,488 +147,39 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_integer_dot_product Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_integer_dot_product Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_shader_integer_dot_product  ( PhysicalDeviceShaderIntegerDotProductFeaturesKHR(..)
-                                                            , PhysicalDeviceShaderIntegerDotProductPropertiesKHR(..)
+module Vulkan.Extensions.VK_KHR_shader_integer_dot_product  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR
+                                                            , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR
+                                                            , PhysicalDeviceShaderIntegerDotProductFeaturesKHR
+                                                            , PhysicalDeviceShaderIntegerDotProductPropertiesKHR
                                                             , KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION
                                                             , pattern KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION
                                                             , KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME
                                                             , pattern KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME
                                                             ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR))
--- | VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR - Structure
--- describing integer dot product features that can be supported by an
--- implementation
---
--- = Members
---
--- The members of the 'PhysicalDeviceShaderIntegerDotProductFeaturesKHR'
--- structure describe the following features:
---
--- = Description
---
--- If the 'PhysicalDeviceShaderIntegerDotProductFeaturesKHR' 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. 'PhysicalDeviceShaderIntegerDotProductFeaturesKHR' /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_KHR_shader_integer_dot_product VK_KHR_shader_integer_dot_product>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-  { -- | #features-shaderIntegerDotProduct# @shaderIntegerDotProduct@ specifies
-    -- whether shader modules /can/ declare the @DotProductInputAllKHR@,
-    -- @DotProductInput4x8BitKHR@, @DotProductInput4x8BitPackedKHR@ and
-    -- @DotProductKHR@ capabilities.
-    shaderIntegerDotProduct :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderIntegerDotProductFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceShaderIntegerDotProductFeaturesKHR
+import Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeatures)
+import Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductProperties)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES
 
-instance ToCStruct PhysicalDeviceShaderIntegerDotProductFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderIntegerDotProductFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderIntegerDotProduct))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceShaderIntegerDotProductFeaturesKHR where
-  peekCStruct p = do
-    shaderIntegerDotProduct <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-             (bool32ToBool shaderIntegerDotProduct)
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES
 
-instance Storable PhysicalDeviceShaderIntegerDotProductFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
 
-instance Zero PhysicalDeviceShaderIntegerDotProductFeaturesKHR where
-  zero = PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR"
+type PhysicalDeviceShaderIntegerDotProductFeaturesKHR = PhysicalDeviceShaderIntegerDotProductFeatures
 
 
--- | VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR - Structure
--- containing information about integer dot product support for a physical
--- device
---
--- = Description
---
--- If the 'PhysicalDeviceShaderIntegerDotProductPropertiesKHR' structure is
--- included in the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceProperties2',
--- it is filled in with each corresponding implementation-dependent
--- property.
---
--- These are properties of the integer dot product acceleration information
--- of a physical device.
---
--- Note
---
--- A dot product operation is deemed accelerated if its implementation
--- provides a performance advantage over application-provided code composed
--- from elementary instructions and\/or other dot product instructions,
--- either because the implementation uses optimized machine code sequences
--- whose generation from application-provided code cannot be guaranteed or
--- because it uses hardware features that cannot otherwise be targeted from
--- application-provided code.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_integer_dot_product VK_KHR_shader_integer_dot_product>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-  { -- | @integerDotProduct8BitUnsignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit unsigned
-    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct8BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProduct8BitSignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
-    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct8BitSignedAccelerated :: Bool
-  , -- | @integerDotProduct8BitMixedSignednessAccelerated@ is a boolean that will
-    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit mixed
-    -- signedness dot product operations using the @OpSUDotKHR@ SPIR-V
-    -- instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct8BitMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProduct4x8BitPackedUnsignedAccelerated@ is a boolean that
-    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit
-    -- unsigned dot product operations from operands packed into 32-bit
-    -- integers using the @OpUDotKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct4x8BitPackedUnsignedAccelerated :: Bool
-  , -- | @integerDotProduct4x8BitPackedSignedAccelerated@ is a boolean that will
-    -- be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 8-bit signed
-    -- dot product operations from operands packed into 32-bit integers using
-    -- the @OpSDotKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct4x8BitPackedSignedAccelerated :: Bool
-  , -- | @integerDotProduct4x8BitPackedMixedSignednessAccelerated@ is a boolean
-    -- that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for
-    -- 8-bit mixed signedness dot product operations from operands packed into
-    -- 32-bit integers using the @OpSUDotKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct4x8BitPackedMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProduct16BitUnsignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit unsigned
-    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct16BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProduct16BitSignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit signed
-    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct16BitSignedAccelerated :: Bool
-  , -- | @integerDotProduct16BitMixedSignednessAccelerated@ is a boolean that
-    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 16-bit
-    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
-    -- instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct16BitMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProduct32BitUnsignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit unsigned
-    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct32BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProduct32BitSignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit signed
-    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct32BitSignedAccelerated :: Bool
-  , -- | @integerDotProduct32BitMixedSignednessAccelerated@ is a boolean that
-    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 32-bit
-    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
-    -- instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct32BitMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProduct64BitUnsignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit unsigned
-    -- dot product operations using the @OpUDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct64BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProduct64BitSignedAccelerated@ is a boolean that will be
-    -- 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit signed
-    -- dot product operations using the @OpSDotKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct64BitSignedAccelerated :: Bool
-  , -- | @integerDotProduct64BitMixedSignednessAccelerated@ is a boolean that
-    -- will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the support for 64-bit
-    -- mixed signedness dot product operations using the @OpSUDotKHR@ SPIR-V
-    -- instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProduct64BitMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating8BitUnsignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 8-bit unsigned accumulating saturating dot product
-    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating8BitSignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 8-bit signed accumulating saturating dot product operations
-    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating8BitSignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated@
-    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 8-bit mixed signedness accumulating saturating dot product
-    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated@
-    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 8-bit unsigned accumulating saturating dot product
-    -- operations from operands packed into 32-bit integers using the
-    -- @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated@
-    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 8-bit signed accumulating saturating dot product operations
-    -- from operands packed into 32-bit integers using the @OpSDotAccSatKHR@
-    -- SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated@
-    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 8-bit mixed signedness accumulating saturating dot product
-    -- operations from operands packed into 32-bit integers using the
-    -- @OpSUDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating16BitUnsignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 16-bit unsigned accumulating saturating dot product
-    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating16BitSignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 16-bit signed accumulating saturating dot product operations
-    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating16BitSignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated@
-    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 16-bit mixed signedness accumulating saturating dot product
-    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating32BitUnsignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 32-bit unsigned accumulating saturating dot product
-    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating32BitSignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 32-bit signed accumulating saturating dot product operations
-    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating32BitSignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated@
-    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 32-bit mixed signedness accumulating saturating dot product
-    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating64BitUnsignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 64-bit unsigned accumulating saturating dot product
-    -- operations using the @OpUDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating64BitSignedAccelerated@ is a
-    -- boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 64-bit signed accumulating saturating dot product operations
-    -- using the @OpSDotAccSatKHR@ SPIR-V instruction is accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating64BitSignedAccelerated :: Bool
-  , -- | @integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated@
-    -- is a boolean that will be 'Vulkan.Core10.FundamentalTypes.TRUE' if the
-    -- support for 64-bit mixed signedness accumulating saturating dot product
-    -- operations using the @OpSUDotAccSatKHR@ SPIR-V instruction is
-    -- accelerated
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-integer-dot-product-accelerated as defined below>.
-    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated :: Bool
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderIntegerDotProductPropertiesKHR)
-#endif
-deriving instance Show PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-
-instance ToCStruct PhysicalDeviceShaderIntegerDotProductPropertiesKHR where
-  withCStruct x f = allocaBytes 136 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderIntegerDotProductPropertiesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitUnsignedAccelerated))
-    poke ((p `plusPtr` 20 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitSignedAccelerated))
-    poke ((p `plusPtr` 24 :: Ptr Bool32)) (boolToBool32 (integerDotProduct8BitMixedSignednessAccelerated))
-    poke ((p `plusPtr` 28 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedUnsignedAccelerated))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedSignedAccelerated))
-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (integerDotProduct4x8BitPackedMixedSignednessAccelerated))
-    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitUnsignedAccelerated))
-    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitSignedAccelerated))
-    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (integerDotProduct16BitMixedSignednessAccelerated))
-    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitUnsignedAccelerated))
-    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitSignedAccelerated))
-    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (integerDotProduct32BitMixedSignednessAccelerated))
-    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitUnsignedAccelerated))
-    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitSignedAccelerated))
-    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (integerDotProduct64BitMixedSignednessAccelerated))
-    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitUnsignedAccelerated))
-    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitSignedAccelerated))
-    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated))
-    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated))
-    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated))
-    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated))
-    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitUnsignedAccelerated))
-    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitSignedAccelerated))
-    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated))
-    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitUnsignedAccelerated))
-    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitSignedAccelerated))
-    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated))
-    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitUnsignedAccelerated))
-    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitSignedAccelerated))
-    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated))
-    f
-  cStructSize = 136
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR)
-    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))
-    poke ((p `plusPtr` 32 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 36 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 40 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 44 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 48 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 52 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 56 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 60 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 64 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 68 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 72 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 76 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 80 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 84 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 88 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 92 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 96 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 100 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 104 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 108 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 112 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 116 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 120 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 124 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 128 :: Ptr Bool32)) (boolToBool32 (zero))
-    poke ((p `plusPtr` 132 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceShaderIntegerDotProductPropertiesKHR where
-  peekCStruct p = do
-    integerDotProduct8BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    integerDotProduct8BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 20 :: Ptr Bool32))
-    integerDotProduct8BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 24 :: Ptr Bool32))
-    integerDotProduct4x8BitPackedUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 28 :: Ptr Bool32))
-    integerDotProduct4x8BitPackedSignedAccelerated <- peek @Bool32 ((p `plusPtr` 32 :: Ptr Bool32))
-    integerDotProduct4x8BitPackedMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 36 :: Ptr Bool32))
-    integerDotProduct16BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 40 :: Ptr Bool32))
-    integerDotProduct16BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 44 :: Ptr Bool32))
-    integerDotProduct16BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 48 :: Ptr Bool32))
-    integerDotProduct32BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 52 :: Ptr Bool32))
-    integerDotProduct32BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 56 :: Ptr Bool32))
-    integerDotProduct32BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 60 :: Ptr Bool32))
-    integerDotProduct64BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 64 :: Ptr Bool32))
-    integerDotProduct64BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 68 :: Ptr Bool32))
-    integerDotProduct64BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 72 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating8BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 76 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating8BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 80 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 84 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 88 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated <- peek @Bool32 ((p `plusPtr` 92 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 96 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating16BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 100 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating16BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 104 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 108 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating32BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 112 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating32BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 116 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 120 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating64BitUnsignedAccelerated <- peek @Bool32 ((p `plusPtr` 124 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating64BitSignedAccelerated <- peek @Bool32 ((p `plusPtr` 128 :: Ptr Bool32))
-    integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated <- peek @Bool32 ((p `plusPtr` 132 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-             (bool32ToBool integerDotProduct8BitUnsignedAccelerated) (bool32ToBool integerDotProduct8BitSignedAccelerated) (bool32ToBool integerDotProduct8BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct4x8BitPackedUnsignedAccelerated) (bool32ToBool integerDotProduct4x8BitPackedSignedAccelerated) (bool32ToBool integerDotProduct4x8BitPackedMixedSignednessAccelerated) (bool32ToBool integerDotProduct16BitUnsignedAccelerated) (bool32ToBool integerDotProduct16BitSignedAccelerated) (bool32ToBool integerDotProduct16BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct32BitUnsignedAccelerated) (bool32ToBool integerDotProduct32BitSignedAccelerated) (bool32ToBool integerDotProduct32BitMixedSignednessAccelerated) (bool32ToBool integerDotProduct64BitUnsignedAccelerated) (bool32ToBool integerDotProduct64BitSignedAccelerated) (bool32ToBool integerDotProduct64BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitUnsignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitSignedAccelerated) (bool32ToBool integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated)
-
-instance Storable PhysicalDeviceShaderIntegerDotProductPropertiesKHR where
-  sizeOf ~_ = 136
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceShaderIntegerDotProductPropertiesKHR where
-  zero = PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-           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
+-- No documentation found for TopLevel "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR"
+type PhysicalDeviceShaderIntegerDotProductPropertiesKHR = PhysicalDeviceShaderIntegerDotProductProperties
 
 
 type KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_integer_dot_product.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_integer_dot_product.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_shader_integer_dot_product.hs-boot
+++ /dev/null
@@ -1,163 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_shader_integer_dot_product - device extension
---
--- == VK_KHR_shader_integer_dot_product
---
--- [__Name String__]
---     @VK_KHR_shader_integer_dot_product@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     281
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Kevin Petit
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_integer_dot_product] @kevinpetit%0A<<Here describe the issue or question you have about the VK_KHR_shader_integer_dot_product extension>> >
---
--- [__Extension Proposal__]
---     <https://github.com/KhronosGroup/Vulkan-Docs/tree/main/proposals/VK_KHR_shader_integer_dot_product.asciidoc VK_KHR_shader_integer_dot_product>
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2021-06-16
---
--- [__Interactions and External Dependencies__]
---
---     -   This extension requires
---         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_integer_dot_product.html SPV_KHR_integer_dot_product>.
---
---     -   This extension interacts with @VK_KHR_shader_float16_int8@.
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Contributors__]
---
---     -   Kévin Petit, Arm Ltd.
---
---     -   Jeff Bolz, NVidia
---
---     -   Spencer Fricke, Samsung
---
---     -   Jesse Hall, Google
---
---     -   John Kessenich, Google
---
---     -   Graeme Leese, Broadcom
---
---     -   Einar Hov, Arm Ltd.
---
---     -   Stuart Brady, Arm Ltd.
---
---     -   Pablo Cascon, Arm Ltd.
---
---     -   Tobias Hector, AMD
---
---     -   Jeff Leger, Qualcomm
---
---     -   Ruihao Zhang, Qualcomm
---
---     -   Pierre Boudier, NVidia
---
---     -   Jon Leech, The Khronos Group
---
---     -   Tom Olson, Arm Ltd.
---
--- == Description
---
--- This extension adds support for the integer dot product SPIR-V
--- instructions defined in SPV_KHR_integer_dot_product. These instructions
--- are particularly useful for neural network inference and training but
--- find uses in other general purpose compute applications as well.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceShaderIntegerDotProductFeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceProperties2':
---
---     -   'PhysicalDeviceShaderIntegerDotProductPropertiesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME'
---
--- -   'KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR'
---
--- == New SPIR-V Capabilities
---
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInputAllKHR DotProductInputAllKHR>
---
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitKHR DotProductInput4x8BitKHR>
---
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductInput4x8BitPackedKHR DotProductInput4x8BitPackedKHR>
---
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-DotProductKHR DotProductKHR>
---
--- == Version History
---
--- -   Revision 1, 2021-06-16 (Kévin Petit)
---
---     -   Initial revision
---
--- == See Also
---
--- 'PhysicalDeviceShaderIntegerDotProductFeaturesKHR',
--- 'PhysicalDeviceShaderIntegerDotProductPropertiesKHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_integer_dot_product Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_shader_integer_dot_product  ( PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-                                                            , PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-                                                            ) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-
-instance ToCStruct PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-instance Show PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-
-instance FromCStruct PhysicalDeviceShaderIntegerDotProductFeaturesKHR
-
-
-data PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-
-instance ToCStruct PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-instance Show PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-
-instance FromCStruct PhysicalDeviceShaderIntegerDotProductPropertiesKHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_non_semantic_info.hs b/src/Vulkan/Extensions/VK_KHR_shader_non_semantic_info.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_non_semantic_info.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_non_semantic_info.hs
@@ -21,6 +21,11 @@
 --
 --     -   Requires Vulkan 1.0
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Baldur Karlsson
@@ -31,14 +36,16 @@
 -- [__Last Modified Date__]
 --     2019-10-16
 --
--- [__IP Status__]
---     No known IP claims.
---
 -- [__Interactions and External Dependencies__]
 --
+--     -   Promoted to Vulkan 1.3 Core
+--
 --     -   This extension requires
 --         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_non_semantic_info.html SPV_KHR_non_semantic_info>
 --
+-- [__IP Status__]
+--     No known IP claims.
+--
 -- [__Contributors__]
 --
 --     -   Baldur Karlsson, Valve
@@ -54,6 +61,13 @@
 --
 -- -   'KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3 Because
+-- the extension has no API controlling its functionality, this results
+-- only in a change to the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-extensions-table SPIR-V Extensions table>.
+--
 -- == Version History
 --
 -- -   Revision 1, 2019-10-16 (Baldur Karlsson)
@@ -67,7 +81,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_non_semantic_info Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_non_semantic_info Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_extended_types.hs b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_extended_types.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_extended_types.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_extended_types.hs
@@ -107,7 +107,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_extended_types Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_extended_types Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs
@@ -61,7 +61,7 @@
 -- to reduce the work performed by a uniform subgroup. This extension will
 -- guarantee that uniform subgroup will reconverge in the same manner as
 -- invocation groups (see “Uniform Control Flow” in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
 --
 -- == New Structures
 --
@@ -94,7 +94,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_uniform_control_flow Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_uniform_control_flow Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_shader_subgroup_uniform_control_flow.hs-boot
@@ -61,7 +61,7 @@
 -- to reduce the work performed by a uniform subgroup. This extension will
 -- guarantee that uniform subgroup will reconverge in the same manner as
 -- invocation groups (see “Uniform Control Flow” in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirv-spec Khronos SPIR-V Specification>).
 --
 -- == New Structures
 --
@@ -94,7 +94,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_subgroup_uniform_control_flow Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_subgroup_uniform_control_flow Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs b/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs
--- a/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Jesse Hall
@@ -33,15 +38,17 @@
 -- [__Last Modified Date__]
 --     2020-08-11
 --
--- [__IP Status__]
---     No known IP claims.
---
 -- [__Interactions and External Dependencies__]
 --
+--     -   Promoted to Vulkan 1.3 Core
+--
 --     -   Requires the
 --         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_terminate_invocation.html SPV_KHR_terminate_invocation>
 --         SPIR-V extension.
 --
+-- [__IP Status__]
+--     No known IP claims.
+--
 -- [__Contributors__]
 --
 --     -   Alan Baker, Google
@@ -86,8 +93,14 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-08-11 (Jesse Hall)
@@ -99,108 +112,27 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_terminate_invocation Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shader_terminate_invocation Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_shader_terminate_invocation  ( PhysicalDeviceShaderTerminateInvocationFeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_shader_terminate_invocation  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR
+                                                             , PhysicalDeviceShaderTerminateInvocationFeaturesKHR
                                                              , KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION
                                                              , pattern KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION
                                                              , KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME
                                                              , pattern KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME
                                                              ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR))
--- | VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR - Structure
--- describing support for the SPIR-V @SPV_KHR_terminate_invocation@
--- extension
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR' 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. 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR' /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_KHR_shader_terminate_invocation VK_KHR_shader_terminate_invocation>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeaturesKHR
-  { -- | #features-shaderTerminateInvocation# @shaderTerminateInvocation@
-    -- specifies whether the implementation supports SPIR-V modules that use
-    -- the @SPV_KHR_terminate_invocation@ extension.
-    shaderTerminateInvocation :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceShaderTerminateInvocationFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceShaderTerminateInvocationFeaturesKHR
+import Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation (PhysicalDeviceShaderTerminateInvocationFeatures)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES
 
-instance ToCStruct PhysicalDeviceShaderTerminateInvocationFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceShaderTerminateInvocationFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderTerminateInvocation))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceShaderTerminateInvocationFeaturesKHR where
-  peekCStruct p = do
-    shaderTerminateInvocation <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceShaderTerminateInvocationFeaturesKHR
-             (bool32ToBool shaderTerminateInvocation)
-
-instance Storable PhysicalDeviceShaderTerminateInvocationFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceShaderTerminateInvocationFeaturesKHR where
-  zero = PhysicalDeviceShaderTerminateInvocationFeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR"
+type PhysicalDeviceShaderTerminateInvocationFeaturesKHR = PhysicalDeviceShaderTerminateInvocationFeatures
 
 
 type KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs-boot b/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_shader_terminate_invocation.hs-boot
+++ /dev/null
@@ -1,118 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_shader_terminate_invocation - device extension
---
--- == VK_KHR_shader_terminate_invocation
---
--- [__Name String__]
---     @VK_KHR_shader_terminate_invocation@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     216
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Jesse Hall
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_shader_terminate_invocation] @critsec%0A<<Here describe the issue or question you have about the VK_KHR_shader_terminate_invocation extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-08-11
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Interactions and External Dependencies__]
---
---     -   Requires the
---         <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_terminate_invocation.html SPV_KHR_terminate_invocation>
---         SPIR-V extension.
---
--- [__Contributors__]
---
---     -   Alan Baker, Google
---
---     -   Jeff Bolz, NVIDIA
---
---     -   Jesse Hall, Google
---
---     -   Ralph Potter, Samsung
---
---     -   Tom Olson, Arm
---
--- == Description
---
--- This extension adds Vulkan support for the
--- <https://htmlpreview.github.io/?https://github.com/KhronosGroup/SPIRV-Registry/blob/master/extensions/KHR/SPV_KHR_terminate_invocation.html SPV_KHR_terminate_invocation>
--- SPIR-V extension. That SPIR-V extension provides a new instruction,
--- @OpTerminateInvocation@, which causes a shader invocation to immediately
--- terminate and sets the coverage of shaded samples to @0@; only
--- previously executed instructions will have observable effects. The
--- @OpTerminateInvocation@ instruction, along with the
--- @OpDemoteToHelperInvocation@ instruction from the
--- @VK_EXT_shader_demote_to_helper_invocation@ extension, together replace
--- the @OpKill@ instruction, which could behave like either of these
--- instructions. @OpTerminateInvocation@ provides the behavior required by
--- the GLSL @discard@ statement, and should be used when available by GLSL
--- compilers and applications that need the GLSL @discard@ behavior.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceShaderTerminateInvocationFeaturesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME'
---
--- -   'KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR'
---
--- == Version History
---
--- -   Revision 1, 2020-08-11 (Jesse Hall)
---
--- == See Also
---
--- 'PhysicalDeviceShaderTerminateInvocationFeaturesKHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shader_terminate_invocation Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_shader_terminate_invocation  (PhysicalDeviceShaderTerminateInvocationFeaturesKHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceShaderTerminateInvocationFeaturesKHR
-
-instance ToCStruct PhysicalDeviceShaderTerminateInvocationFeaturesKHR
-instance Show PhysicalDeviceShaderTerminateInvocationFeaturesKHR
-
-instance FromCStruct PhysicalDeviceShaderTerminateInvocationFeaturesKHR
-
diff --git a/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs b/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs
--- a/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs
+++ b/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs
@@ -212,7 +212,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs-boot b/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_shared_presentable_image.hs-boot
@@ -212,7 +212,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_shared_presentable_image Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs b/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs
--- a/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs
+++ b/src/Vulkan/Extensions/VK_KHR_spirv_1_4.hs
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_spirv_1_4 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_spirv_1_4 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_storage_buffer_storage_class.hs b/src/Vulkan/Extensions/VK_KHR_storage_buffer_storage_class.hs
--- a/src/Vulkan/Extensions/VK_KHR_storage_buffer_storage_class.hs
+++ b/src/Vulkan/Extensions/VK_KHR_storage_buffer_storage_class.hs
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_storage_buffer_storage_class Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_storage_buffer_storage_class Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_surface.hs b/src/Vulkan/Extensions/VK_KHR_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_surface.hs
@@ -367,7 +367,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -572,7 +572,7 @@
                      SurfaceKHR
                   -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                      -- surface object when there is no more specific allocator available (see
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io ()
 destroySurfaceKHR instance' surface allocator = liftIO . evalContT $ do
@@ -1416,7 +1416,7 @@
 --
 -- The transfer functions are described in the “Transfer Functions” chapter
 -- of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#data-format Khronos Data Format Specification>.
 --
 -- Except Display-P3 OETF, which is:
 --
diff --git a/src/Vulkan/Extensions/VK_KHR_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_surface.hs-boot
@@ -367,7 +367,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs b/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs
--- a/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs-boot b/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_surface_protected_capabilities.hs-boot
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_surface_protected_capabilities Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_swapchain.hs b/src/Vulkan/Extensions/VK_KHR_swapchain.hs
--- a/src/Vulkan/Extensions/VK_KHR_swapchain.hs
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain.hs
@@ -1069,7 +1069,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -1370,7 +1370,7 @@
                       (SwapchainCreateInfoKHR a)
                    -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                       -- swapchain object when there is no more specific allocator available (see
-                      -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                      -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                       ("allocator" ::: Maybe AllocationCallbacks)
                    -> io (SwapchainKHR)
 createSwapchainKHR device createInfo allocator = liftIO . evalContT $ do
@@ -1487,7 +1487,7 @@
                        SwapchainKHR
                     -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                        -- swapchain object when there is no more specific allocator available (see
-                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                       -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io ()
 destroySwapchainKHR device swapchain allocator = liftIO . evalContT $ do
@@ -1819,7 +1819,7 @@
 -- -   #VUID-vkQueuePresentKHR-pWaitSemaphores-01295# All elements of the
 --     @pWaitSemaphores@ member of @pPresentInfo@ /must/ be semaphores that
 --     are signaled, or have
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
 --     previously submitted for execution
 --
 -- -   #VUID-vkQueuePresentKHR-pWaitSemaphores-03267# All elements of the
@@ -2500,7 +2500,7 @@
 --     referred to by @surface@
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-imageFormat-01778# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>
 --     of the swapchain /must/ be supported as reported by
 --     'Vulkan.Core10.DeviceInitialization.getPhysicalDeviceImageFormatProperties'
 --
@@ -2518,7 +2518,7 @@
 --     is not zero then all of the formats in
 --     'Vulkan.Core12.Promoted_From_VK_KHR_image_format_list.ImageFormatListCreateInfo'::@pViewFormats@
 --     /must/ be compatible with the @format@ as described in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#formats-compatibility compatibility table>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#formats-compatibility compatibility table>
 --
 -- -   #VUID-VkSwapchainCreateInfoKHR-flags-04100# If @flags@ does not
 --     contain 'SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR' and the @pNext@
@@ -2879,7 +2879,7 @@
 -- -   #VUID-VkPresentInfoKHR-pNext-06235# If a
 --     'Vulkan.Extensions.VK_KHR_present_id.PresentIdKHR' structure is
 --     included in the @pNext@ chain, and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-presentId presentId>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-presentId presentId>
 --     feature is not enabled, each @presentIds@ entry in that structure
 --     /must/ be NULL
 --
@@ -3121,7 +3121,7 @@
 -- -   #VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995# If @swapchain@
 --     is not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the fields of
 --     'Vulkan.Core10.Image.ImageCreateInfo' /must/ match the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#swapchain-wsi-image-create-info implied image creation parameters>
 --     of the swapchain
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot b/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain.hs-boot
@@ -1069,7 +1069,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_swapchain Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_swapchain_mutable_format.hs b/src/Vulkan/Extensions/VK_KHR_swapchain_mutable_format.hs
--- a/src/Vulkan/Extensions/VK_KHR_swapchain_mutable_format.hs
+++ b/src/Vulkan/Extensions/VK_KHR_swapchain_mutable_format.hs
@@ -114,7 +114,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_swapchain_mutable_format Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_swapchain_mutable_format Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
--- a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
+++ b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs
@@ -23,5978 +23,1124 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
--- [__Contact__]
---
---     -   Tobias Hector
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_synchronization2] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_synchronization2 extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-12-03
---
--- [__Interactions and External Dependencies__]
---
---     -   Interacts with @VK_KHR_create_renderpass2@
---
--- [__Contributors__]
---
---     -   Tobias Hector
---
--- == Description
---
--- This extension modifies the original core synchronization APIs to
--- simplify the interface and improve usability of these APIs. It also adds
--- new pipeline stage and access flag types that extend into the 64-bit
--- range, as we have run out within the 32-bit range. The new flags are
--- identical to the old values within the 32-bit range, with new stages and
--- bits beyond that.
---
--- Pipeline stages and access flags are now specified together in memory
--- barrier structures, making the connection between the two more obvious.
--- Additionally, scoping the pipeline stages into the barrier structs
--- allows the use of the @MEMORY_READ@ and @MEMORY_WRITE@ flags without
--- sacrificing precision. The per-stage access flags should be used to
--- disambiguate specific accesses in a given stage or set of stages - for
--- instance, between uniform reads and sampling operations.
---
--- Layout transitions have been simplified as well; rather than requiring a
--- different set of layouts for depth\/stencil\/color attachments, there
--- are generic
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
--- and 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
--- layouts which are contextually applied based on the image format. For
--- example, for a depth format image,
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' is
--- equivalent to
--- 'Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR'.
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
--- also functionally replaces
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'.
---
--- Events are now more efficient, because they include memory dependency
--- information when you set them on the device. Previously, this
--- information was only known when waiting on an event, so the dependencies
--- could not be satisfied until the wait occurred. That sometimes meant
--- stalling the pipeline when the wait occurred. The new API provides
--- enough information for implementations to satisfy these dependencies in
--- parallel with other tasks.
---
--- Queue submission has been changed to wrap command buffers and semaphores
--- in extensible structures, which incorporate changes from Vulkan 1.1,
--- @VK_KHR_device_group@, and @VK_KHR_timeline_semaphore@. This also adds a
--- pipeline stage to the semaphore signal operation, mirroring the existing
--- pipeline stage specification for wait operations.
---
--- Other miscellaneous changes include:
---
--- -   Events can now be specified as interacting only with the device,
---     allowing more efficient access to the underlying object.
---
--- -   Image memory barriers that do not perform an image layout transition
---     can be specified by setting @oldLayout@ equal to @newLayout@.
---
---     -   E.g. the old and new layout can both be set to
---         'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
---         without discarding data in the image.
---
--- -   Queue family ownership transfer parameters are simplified in some
---     cases.
---
--- -   Where two synchronization commands need to be matched up (queue
---     transfer operations, events), the dependency information specified
---     in each place must now match completely for consistency.
---
--- -   Extensions with commands or functions with a
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags' or
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
---     parameter have had those APIs replaced with equivalents using
---     'PipelineStageFlags2KHR'.
---
--- -   The new event and barrier interfaces are now more extensible for
---     future changes.
---
--- -   Relevant pipeline stage masks can now be specified as empty with the
---     new
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_NONE_KHR'
---     and 'PIPELINE_STAGE_2_NONE_KHR' values.
---
--- -   'MemoryBarrier2KHR' can be chained to
---     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',
---     overriding the original 32-bit stage and access masks.
---
--- == New Base Types
---
--- -   'Vulkan.Core10.FundamentalTypes.Flags64'
---
--- == New Commands
---
--- -   'cmdPipelineBarrier2KHR'
---
--- -   'cmdResetEvent2KHR'
---
--- -   'cmdSetEvent2KHR'
---
--- -   'cmdWaitEvents2KHR'
---
--- -   'cmdWriteTimestamp2KHR'
---
--- -   'queueSubmit2KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>
--- is supported:
---
--- -   'cmdWriteBufferMarker2AMD'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>
--- is supported:
---
--- -   'getQueueCheckpointData2NV'
---
--- == New Structures
---
--- -   'BufferMemoryBarrier2KHR'
---
--- -   'CommandBufferSubmitInfoKHR'
---
--- -   'DependencyInfoKHR'
---
--- -   'ImageMemoryBarrier2KHR'
---
--- -   'SemaphoreSubmitInfoKHR'
---
--- -   'SubmitInfo2KHR'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceSynchronization2FeaturesKHR'
---
--- -   Extending
---     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2':
---
---     -   'MemoryBarrier2KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>
--- is supported:
---
--- -   'CheckpointData2NV'
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
---
---     -   'QueueFamilyCheckpointProperties2NV'
---
--- == New Enums
---
--- -   'AccessFlagBits2KHR'
---
--- -   'PipelineStageFlagBits2KHR'
---
--- -   'SubmitFlagBitsKHR'
---
--- == New Bitmasks
---
--- -   'AccessFlags2KHR'
---
--- -   'PipelineStageFlags2KHR'
---
--- -   'SubmitFlagsKHR'
---
--- == New Enum Constants
---
--- -   'KHR_SYNCHRONIZATION_2_EXTENSION_NAME'
---
--- -   'KHR_SYNCHRONIZATION_2_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
---
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_NONE_KHR'
---
--- -   Extending
---     'Vulkan.Core10.Enums.EventCreateFlagBits.EventCreateFlagBits':
---
---     -   'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
---
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
---
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
---
--- -   Extending
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
---
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_NONE_KHR'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEPENDENCY_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBMIT_INFO_2_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced VK_EXT_blend_operation_advanced>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
---
---     -   'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
---
---     -   'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR'
---
---     -   'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
--- is supported:
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>
--- is supported:
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV'
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV'
---
---     -   'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>
--- is supported:
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
---     -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV'
---
---     -   'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV'
---
---     -   'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV'
---
--- If
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>
--- is supported:
---
--- -   Extending 'AccessFlagBits2KHR':
---
---     -   'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV'
---
--- -   Extending 'PipelineStageFlagBits2KHR':
---
---     -   'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- == Examples
---
--- See
--- <https://github.com/KhronosGroup/Vulkan-Docs/wiki/Synchronization-Examples>
---
--- == Version History
---
--- -   Revision 1, 2020-12-03 (Tobias Hector)
---
---     -   Internal revisions
---
--- == See Also
---
--- 'AccessFlagBits2KHR', 'AccessFlags2KHR', 'BufferMemoryBarrier2KHR',
--- 'CommandBufferSubmitInfoKHR', 'DependencyInfoKHR',
--- 'Vulkan.Core10.FundamentalTypes.Flags64', 'ImageMemoryBarrier2KHR',
--- 'MemoryBarrier2KHR', 'PhysicalDeviceSynchronization2FeaturesKHR',
--- 'PipelineStageFlagBits2KHR', 'PipelineStageFlags2KHR',
--- 'SemaphoreSubmitInfoKHR', 'SubmitFlagBitsKHR', 'SubmitFlagsKHR',
--- 'SubmitInfo2KHR', 'cmdPipelineBarrier2KHR', 'cmdResetEvent2KHR',
--- 'cmdSetEvent2KHR', 'cmdWaitEvents2KHR', 'cmdWriteTimestamp2KHR',
--- 'queueSubmit2KHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_synchronization2  ( cmdSetEvent2KHR
-                                                  , cmdResetEvent2KHR
-                                                  , cmdWaitEvents2KHR
-                                                  , cmdWaitEvents2KHRSafe
-                                                  , cmdPipelineBarrier2KHR
-                                                  , queueSubmit2KHR
-                                                  , cmdWriteTimestamp2KHR
-                                                  , cmdWriteBufferMarker2AMD
-                                                  , getQueueCheckpointData2NV
-                                                  , pattern PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
-                                                  , pattern ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
-                                                  , pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV
-                                                  , pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV
-                                                  , pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV
-                                                  , pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV
-                                                  , pattern PIPELINE_STAGE_2_TRANSFER_BIT_KHR
-                                                  , MemoryBarrier2KHR(..)
-                                                  , ImageMemoryBarrier2KHR(..)
-                                                  , BufferMemoryBarrier2KHR(..)
-                                                  , DependencyInfoKHR(..)
-                                                  , SemaphoreSubmitInfoKHR(..)
-                                                  , CommandBufferSubmitInfoKHR(..)
-                                                  , SubmitInfo2KHR(..)
-                                                  , QueueFamilyCheckpointProperties2NV(..)
-                                                  , CheckpointData2NV(..)
-                                                  , PhysicalDeviceSynchronization2FeaturesKHR(..)
-                                                  , AccessFlags2KHR
-                                                  , AccessFlagBits2KHR( ACCESS_2_NONE_KHR
-                                                                      , ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR
-                                                                      , ACCESS_2_INDEX_READ_BIT_KHR
-                                                                      , ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR
-                                                                      , ACCESS_2_UNIFORM_READ_BIT_KHR
-                                                                      , ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR
-                                                                      , ACCESS_2_SHADER_READ_BIT_KHR
-                                                                      , ACCESS_2_SHADER_WRITE_BIT_KHR
-                                                                      , ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR
-                                                                      , ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR
-                                                                      , ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR
-                                                                      , ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR
-                                                                      , ACCESS_2_TRANSFER_READ_BIT_KHR
-                                                                      , ACCESS_2_TRANSFER_WRITE_BIT_KHR
-                                                                      , ACCESS_2_HOST_READ_BIT_KHR
-                                                                      , ACCESS_2_HOST_WRITE_BIT_KHR
-                                                                      , ACCESS_2_MEMORY_READ_BIT_KHR
-                                                                      , ACCESS_2_MEMORY_WRITE_BIT_KHR
-                                                                      , ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR
-                                                                      , ACCESS_2_SHADER_STORAGE_READ_BIT_KHR
-                                                                      , ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR
-                                                                      , ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
-                                                                      , ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
-                                                                      , ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
-                                                                      , ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
-                                                                      , ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
-                                                                      , ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
-                                                                      , ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
-                                                                      , ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
-                                                                      , ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
-                                                                      , ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
-                                                                      , ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
-                                                                      , ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
-                                                                      , ..
-                                                                      )
-                                                  , PipelineStageFlags2KHR
-                                                  , PipelineStageFlagBits2KHR( PIPELINE_STAGE_2_NONE_KHR
-                                                                             , PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_HOST_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_COPY_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_RESOLVE_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_BLIT_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_CLEAR_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
-                                                                             , PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
-                                                                             , PIPELINE_STAGE_2_MESH_SHADER_BIT_NV
-                                                                             , PIPELINE_STAGE_2_TASK_SHADER_BIT_NV
-                                                                             , PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
-                                                                             , PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-                                                                             , PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
-                                                                             , PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
-                                                                             , PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
-                                                                             , ..
-                                                                             )
-                                                  , SubmitFlagsKHR
-                                                  , SubmitFlagBitsKHR( SUBMIT_PROTECTED_BIT_KHR
-                                                                     , ..
-                                                                     )
-                                                  , KHR_SYNCHRONIZATION_2_SPEC_VERSION
-                                                  , pattern KHR_SYNCHRONIZATION_2_SPEC_VERSION
-                                                  , KHR_SYNCHRONIZATION_2_EXTENSION_NAME
-                                                  , pattern KHR_SYNCHRONIZATION_2_EXTENSION_NAME
-                                                  , Flags64
-                                                  ) where
-
-import Vulkan.Internal.Utils (enumReadPrec)
-import Vulkan.Internal.Utils (enumShowsPrec)
-import Vulkan.Internal.Utils (traceAroundEvent)
-import Control.Exception.Base (bracket)
-import Control.Monad (unless)
-import Control.Monad.IO.Class (liftIO)
-import Data.Typeable (eqT)
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Marshal.Alloc (callocBytes)
-import Foreign.Marshal.Alloc (free)
-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 GHC.Show (showString)
-import Numeric (showHex)
-import Control.Monad.Trans.Class (lift)
-import Control.Monad.Trans.Cont (evalContT)
-import Data.Vector (generateM)
-import qualified Data.Vector (imapM_)
-import qualified Data.Vector (length)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero)
-import Vulkan.Zero (Zero(..))
-import Control.Monad.IO.Class (MonadIO)
-import Data.Bits (Bits)
-import Data.Bits (FiniteBits)
-import Data.String (IsString)
-import Data.Type.Equality ((:~:)(Refl))
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import GHC.IO.Exception (IOErrorType(..))
-import GHC.IO.Exception (IOException(..))
-import Foreign.Ptr (FunPtr)
-import Foreign.Ptr (Ptr)
-import GHC.Read (Read(readPrec))
-import GHC.Show (Show(showsPrec))
-import Data.Word (Word32)
-import Data.Word (Word64)
-import Data.Kind (Type)
-import Control.Monad.Trans.Cont (ContT(..))
-import Data.Vector (Vector)
-import Vulkan.CStruct.Utils (advancePtrBytes)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.CStruct.Extends (forgetExtensions)
-import Vulkan.CStruct.Extends (peekSomeCStruct)
-import Vulkan.CStruct.Extends (pokeSomeCStruct)
-import Vulkan.NamedType ((:::))
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Handles (Buffer)
-import Vulkan.Core10.Handles (Buffer(..))
-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.Enums.DependencyFlagBits (DependencyFlags)
-import Vulkan.Dynamic (DeviceCmds(pVkCmdPipelineBarrier2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdResetEvent2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdSetEvent2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdWaitEvents2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteBufferMarker2AMD))
-import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteTimestamp2KHR))
-import Vulkan.Dynamic (DeviceCmds(pVkGetQueueCheckpointData2NV))
-import Vulkan.Dynamic (DeviceCmds(pVkQueueSubmit2KHR))
-import Vulkan.Core10.FundamentalTypes (DeviceSize)
-import Vulkan.Core10.Handles (Event)
-import Vulkan.Core10.Handles (Event(..))
-import Vulkan.CStruct.Extends (Extends)
-import Vulkan.CStruct.Extends (Extendss)
-import Vulkan.CStruct.Extends (Extensible(..))
-import Vulkan.Core10.Handles (Fence)
-import Vulkan.Core10.Handles (Fence(..))
-import Vulkan.Core10.FundamentalTypes (Flags)
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Core10.Handles (Image)
-import Vulkan.Core10.Enums.ImageLayout (ImageLayout)
-import Vulkan.Core10.ImageView (ImageSubresourceRange)
-import Vulkan.CStruct.Extends (PeekChain)
-import Vulkan.CStruct.Extends (PeekChain(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_performance_query (PerformanceQuerySubmitInfoKHR)
-import Vulkan.CStruct.Extends (PokeChain)
-import Vulkan.CStruct.Extends (PokeChain(..))
-import Vulkan.Core10.Handles (QueryPool)
-import Vulkan.Core10.Handles (QueryPool(..))
-import Vulkan.Core10.Handles (Queue)
-import Vulkan.Core10.Handles (Queue(..))
-import Vulkan.Core10.Handles (Queue(Queue))
-import Vulkan.Core10.Handles (Queue_T)
-import Vulkan.Core10.Enums.Result (Result)
-import Vulkan.Core10.Enums.Result (Result(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_sample_locations (SampleLocationsInfoEXT)
-import Vulkan.Core10.Handles (Semaphore)
-import Vulkan.CStruct.Extends (SomeStruct)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Exception (VulkanException(..))
-import {-# SOURCE #-} Vulkan.Extensions.VK_KHR_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoKHR)
-import {-# SOURCE #-} Vulkan.Extensions.VK_NV_win32_keyed_mutex (Win32KeyedMutexAcquireReleaseInfoNV)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEPENDENCY_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR))
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBMIT_INFO_2_KHR))
-import Vulkan.Core10.Enums.Result (Result(SUCCESS))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdSetEvent2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Event -> Ptr DependencyInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Event -> Ptr DependencyInfoKHR -> IO ()
-
--- | vkCmdSetEvent2KHR - Set an event object to signaled state
---
--- = Description
---
--- When 'cmdSetEvent2KHR' is submitted to a queue, it defines the first
--- half of memory dependencies defined by @pDependencyInfo@, as well as an
--- event signal operation which sets the event to the signaled state. A
--- memory dependency is defined between the event signal operation and
--- commands that occur earlier in submission order.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- are defined by the union of all the memory dependencies defined by
--- @pDependencyInfo@, and are applied to all operations that occur earlier
--- in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers Queue family ownership transfers>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
--- defined by @pDependencyInfo@ are also included in the first scopes.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes only the event signal operation, and any
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>
--- defined by @pDependencyInfo@.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- includes only
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfers>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
---
--- Future 'cmdWaitEvents2KHR' commands rely on all values of each element
--- in @pDependencyInfo@ matching exactly with those used to signal the
--- corresponding event. 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents'
--- /must/ not be used to wait on the result of a signal operation defined
--- by 'cmdSetEvent2KHR'.
---
--- Note
---
--- The extra information provided by 'cmdSetEvent2KHR' compared to
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent' allows implementations
--- to more efficiently schedule the operations required to satisfy the
--- requested dependencies. With
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent', the full dependency
--- information is not known until
--- 'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' is recorded, forcing
--- implementations to insert the required operations at that point and not
--- before.
---
--- If @event@ is already in the signaled state when 'cmdSetEvent2KHR' is
--- executed on the device, then 'cmdSetEvent2KHR' has no effect, no event
--- signal operation occurs, and no dependency is generated.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdSetEvent2KHR-synchronization2-03824# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdSetEvent2KHR-dependencyFlags-03825# The @dependencyFlags@
---     member of @pDependencyInfo@ /must/ be @0@
---
--- -   #VUID-vkCmdSetEvent2KHR-commandBuffer-03826# The current device mask
---     of @commandBuffer@ /must/ include exactly one physical device
---
--- -   #VUID-vkCmdSetEvent2KHR-srcStageMask-03827# The @srcStageMask@
---     member of any element of the @pMemoryBarriers@,
---     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfo@ /must/ only include pipeline stages valid for the
---     queue family that was used to create the command pool that
---     @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdSetEvent2KHR-dstStageMask-03828# The @dstStageMask@
---     member of any element of the @pMemoryBarriers@,
---     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfo@ /must/ only include pipeline stages valid for the
---     queue family that was used to create the command pool that
---     @commandBuffer@ was allocated from
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdSetEvent2KHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdSetEvent2KHR-event-parameter# @event@ /must/ be a valid
---     'Vulkan.Core10.Handles.Event' handle
---
--- -   #VUID-vkCmdSetEvent2KHR-pDependencyInfo-parameter# @pDependencyInfo@
---     /must/ be a valid pointer to a valid 'DependencyInfoKHR' structure
---
--- -   #VUID-vkCmdSetEvent2KHR-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-vkCmdSetEvent2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdSetEvent2KHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdSetEvent2KHR-commonparent# Both of @commandBuffer@, and
---     @event@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'DependencyInfoKHR',
--- 'Vulkan.Core10.Handles.Event'
-cmdSetEvent2KHR :: forall io
-                 . (MonadIO io)
-                => -- | @commandBuffer@ is the command buffer into which the command is
-                   -- recorded.
-                   CommandBuffer
-                -> -- | @event@ is the event that will be signaled.
-                   Event
-                -> -- | @pDependencyInfo@ is a pointer to a 'DependencyInfoKHR' structure
-                   -- defining the first scopes of this operation.
-                   DependencyInfoKHR
-                -> io ()
-cmdSetEvent2KHR commandBuffer event dependencyInfo = liftIO . evalContT $ do
-  let vkCmdSetEvent2KHRPtr = pVkCmdSetEvent2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdSetEvent2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdSetEvent2KHR is null" Nothing Nothing
-  let vkCmdSetEvent2KHR' = mkVkCmdSetEvent2KHR vkCmdSetEvent2KHRPtr
-  pDependencyInfo <- ContT $ withCStruct (dependencyInfo)
-  lift $ traceAroundEvent "vkCmdSetEvent2KHR" (vkCmdSetEvent2KHR' (commandBufferHandle (commandBuffer)) (event) pDependencyInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdResetEvent2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Event -> PipelineStageFlags2KHR -> IO ()) -> Ptr CommandBuffer_T -> Event -> PipelineStageFlags2KHR -> IO ()
-
--- | vkCmdResetEvent2KHR - Reset an event object to non-signaled state
---
--- = Description
---
--- When 'cmdResetEvent2KHR' is submitted to a queue, it defines an
--- execution dependency on commands that were submitted before it, and
--- defines an event unsignal operation which resets the event to the
--- unsignaled state.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands that occur earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- The synchronization scope is limited to operations by @stageMask@ or
--- stages that are
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages-order logically earlier>
--- than @stageMask@.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes only the event unsignal operation.
---
--- If @event@ is already in the unsignaled state when 'cmdResetEvent2KHR'
--- is executed on the device, then this command has no effect, no event
--- unsignal operation occurs, and no execution dependency is generated.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-vkCmdResetEvent2KHR-synchronization2-03829# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-03830# @stageMask@ /must/ not
---     include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-vkCmdResetEvent2KHR-event-03831# There /must/ be an execution
---     dependency between 'cmdResetEvent2KHR' and the execution of any
---     'Vulkan.Core10.CommandBufferBuilding.cmdWaitEvents' that includes
---     @event@ in its @pEvents@ parameter
---
--- -   #VUID-vkCmdResetEvent2KHR-event-03832# There /must/ be an execution
---     dependency between 'cmdResetEvent2KHR' and the execution of any
---     'cmdWaitEvents2KHR' that includes @event@ in its @pEvents@ parameter
---
--- -   #VUID-vkCmdResetEvent2KHR-commandBuffer-03833# @commandBuffer@’s
---     current device mask /must/ include exactly one physical device
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdResetEvent2KHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdResetEvent2KHR-event-parameter# @event@ /must/ be a valid
---     'Vulkan.Core10.Handles.Event' handle
---
--- -   #VUID-vkCmdResetEvent2KHR-stageMask-parameter# @stageMask@ /must/ be
---     a valid combination of 'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-vkCmdResetEvent2KHR-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-vkCmdResetEvent2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdResetEvent2KHR-renderpass# This command /must/ only be
---     called outside of a render pass instance
---
--- -   #VUID-vkCmdResetEvent2KHR-commonparent# Both of @commandBuffer@, and
---     @event@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Outside                                                                                                                | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'Vulkan.Core10.Handles.Event',
--- 'PipelineStageFlags2KHR'
-cmdResetEvent2KHR :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which the command is
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @event@ is the event that will be unsignaled.
-                     Event
-                  -> -- | @stageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages used
-                     -- to determine the first
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
-                     ("stageMask" ::: PipelineStageFlags2KHR)
-                  -> io ()
-cmdResetEvent2KHR commandBuffer event stageMask = liftIO $ do
-  let vkCmdResetEvent2KHRPtr = pVkCmdResetEvent2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdResetEvent2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdResetEvent2KHR is null" Nothing Nothing
-  let vkCmdResetEvent2KHR' = mkVkCmdResetEvent2KHR vkCmdResetEvent2KHRPtr
-  traceAroundEvent "vkCmdResetEvent2KHR" (vkCmdResetEvent2KHR' (commandBufferHandle (commandBuffer)) (event) (stageMask))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWaitEvents2KHRUnsafe
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfoKHR -> IO ()
-
-foreign import ccall
-  "dynamic" mkVkCmdWaitEvents2KHRSafe
-  :: FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfoKHR -> IO ()
-
--- | cmdWaitEvents2KHR with selectable safeness
-cmdWaitEvents2KHRSafeOrUnsafe :: forall io
-                               . (MonadIO io)
-                              => (FunPtr (Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Word32 -> Ptr Event -> Ptr DependencyInfoKHR -> IO ())
-                              -> -- | @commandBuffer@ is the command buffer into which the command is
-                                 -- recorded.
-                                 CommandBuffer
-                              -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
-                                 ("events" ::: Vector Event)
-                              -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
-                                 -- 'DependencyInfoKHR' structures, defining the second
-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
-                                 ("dependencyInfos" ::: Vector DependencyInfoKHR)
-                              -> io ()
-cmdWaitEvents2KHRSafeOrUnsafe mkVkCmdWaitEvents2KHR commandBuffer events dependencyInfos = liftIO . evalContT $ do
-  let vkCmdWaitEvents2KHRPtr = pVkCmdWaitEvents2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdWaitEvents2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWaitEvents2KHR is null" Nothing Nothing
-  let vkCmdWaitEvents2KHR' = mkVkCmdWaitEvents2KHR vkCmdWaitEvents2KHRPtr
-  let pEventsLength = Data.Vector.length $ (events)
-  lift $ unless ((Data.Vector.length $ (dependencyInfos)) == pEventsLength) $
-    throwIO $ IOError Nothing InvalidArgument "" "pDependencyInfos and pEvents must have the same length" Nothing Nothing
-  pPEvents <- ContT $ allocaBytes @Event ((Data.Vector.length (events)) * 8)
-  lift $ Data.Vector.imapM_ (\i e -> poke (pPEvents `plusPtr` (8 * (i)) :: Ptr Event) (e)) (events)
-  pPDependencyInfos <- ContT $ allocaBytes @DependencyInfoKHR ((Data.Vector.length (dependencyInfos)) * 64)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeCStruct (pPDependencyInfos `plusPtr` (64 * (i)) :: Ptr DependencyInfoKHR) (e) . ($ ())) (dependencyInfos)
-  lift $ traceAroundEvent "vkCmdWaitEvents2KHR" (vkCmdWaitEvents2KHR' (commandBufferHandle (commandBuffer)) ((fromIntegral pEventsLength :: Word32)) (pPEvents) (pPDependencyInfos))
-  pure $ ()
-
--- | vkCmdWaitEvents2KHR - Wait for one or more events
---
--- = Description
---
--- When 'cmdWaitEvents2KHR' is submitted to a queue, it inserts memory
--- dependencies according to the elements of @pDependencyInfos@ and each
--- corresponding element of @pEvents@. 'cmdWaitEvents2KHR' /must/ not be
--- used to wait on event signal operations occurring on other queues, or
--- signal operations executed by
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- of each memory dependency defined by any element i of @pDependencyInfos@
--- are applied to operations that occurred earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
--- than the last event signal operation on element i of @pEvents@.
---
--- Signal operations for an event at index i are only included if:
---
--- -   The event was signaled by a 'cmdSetEvent2KHR' command that occurred
---     earlier in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
---     with a @dependencyInfo@ parameter exactly equal to the element of
---     @pDependencyInfos@ at index i ; or
---
--- -   The event was created without
---     'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT_KHR',
---     and the first
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
---     defined by the element of @pDependencyInfos@ at index i only
---     includes host operations ('PIPELINE_STAGE_2_HOST_BIT_KHR').
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- of each memory dependency defined by any element i of @pDependencyInfos@
--- are applied to operations that occurred later in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
--- than 'cmdWaitEvents2KHR'.
---
--- Note
---
--- 'cmdWaitEvents2KHR' is used with 'cmdSetEvent2KHR' to define a memory
--- dependency between two sets of action commands, roughly in the same way
--- as pipeline barriers, but split into two commands such that work between
--- the two /may/ execute unhindered.
---
--- Note
---
--- Applications should be careful to avoid race conditions when using
--- events. There is no direct ordering guarantee between 'cmdSetEvent2KHR'
--- and 'cmdResetEvent2KHR',
--- 'Vulkan.Core10.CommandBufferBuilding.cmdResetEvent', or
--- 'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'. Another execution
--- dependency (e.g. a pipeline barrier or semaphore with
--- 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR') is needed to prevent such a
--- race condition.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWaitEvents2KHR-synchronization2-03836# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03837# Members of @pEvents@ /must/
---     not have been signaled by
---     'Vulkan.Core10.CommandBufferBuilding.cmdSetEvent'
---
--- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03838# For any element i of
---     @pEvents@, if that event is signaled by 'cmdSetEvent2KHR', that
---     command’s @dependencyInfo@ parameter /must/ be exactly equal to the
---     ith element of @pDependencyInfos@
---
--- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03839# For any element i of
---     @pEvents@, if that event is signaled by
---     'Vulkan.Core10.Event.setEvent', barriers in the ith element of
---     @pDependencyInfos@ /must/ include only host operations in their
---     first
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
---
--- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03840# For any element i of
---     @pEvents@, if barriers in the ith element of @pDependencyInfos@
---     include only host operations, the ith element of @pEvents@ /must/ be
---     signaled before 'cmdWaitEvents2KHR' is executed
---
--- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03841# For any element i of
---     @pEvents@, if barriers in the ith element of @pDependencyInfos@ do
---     not include host operations, the ith element of @pEvents@ /must/ be
---     signaled by a corresponding 'cmdSetEvent2KHR' that occurred earlier
---     in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>
---
--- -   #VUID-vkCmdWaitEvents2KHR-srcStageMask-03842# The @srcStageMask@
---     member of any element of the @pMemoryBarriers@,
---     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfos@ /must/ either include only pipeline stages valid
---     for the queue family that was used to create the command pool that
---     @commandBuffer@ was allocated from, or include only
---     'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-vkCmdWaitEvents2KHR-dstStageMask-03843# The @dstStageMask@
---     member of any element of the @pMemoryBarriers@,
---     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfos@ /must/ only include pipeline stages valid for the
---     queue family that was used to create the command pool that
---     @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdWaitEvents2KHR-dependencyFlags-03844# The
---     @dependencyFlags@ member of any element of @pDependencyInfo@ /must/
---     be @0@
---
--- -   #VUID-vkCmdWaitEvents2KHR-pEvents-03845# If @pEvents@ includes one
---     or more events that will be signaled by
---     'Vulkan.Core10.Event.setEvent' after @commandBuffer@ has been
---     submitted to a queue, then 'cmdWaitEvents2KHR' /must/ not be called
---     inside a render pass instance
---
--- -   #VUID-vkCmdWaitEvents2KHR-commandBuffer-03846# @commandBuffer@’s
---     current device mask /must/ include exactly one physical device
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWaitEvents2KHR-commandBuffer-parameter# @commandBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWaitEvents2KHR-pEvents-parameter# @pEvents@ /must/ be a
---     valid pointer to an array of @eventCount@ valid
---     'Vulkan.Core10.Handles.Event' handles
---
--- -   #VUID-vkCmdWaitEvents2KHR-pDependencyInfos-parameter#
---     @pDependencyInfos@ /must/ be a valid pointer to an array of
---     @eventCount@ valid 'DependencyInfoKHR' structures
---
--- -   #VUID-vkCmdWaitEvents2KHR-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-vkCmdWaitEvents2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support graphics, or compute operations
---
--- -   #VUID-vkCmdWaitEvents2KHR-eventCount-arraylength# @eventCount@
---     /must/ be greater than @0@
---
--- -   #VUID-vkCmdWaitEvents2KHR-commonparent# Both of @commandBuffer@, and
---     the elements of @pEvents@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Graphics                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'DependencyInfoKHR',
--- 'Vulkan.Core10.Handles.Event'
-cmdWaitEvents2KHR :: forall io
-                   . (MonadIO io)
-                  => -- | @commandBuffer@ is the command buffer into which the command is
-                     -- recorded.
-                     CommandBuffer
-                  -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
-                     ("events" ::: Vector Event)
-                  -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
-                     -- 'DependencyInfoKHR' structures, defining the second
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
-                     ("dependencyInfos" ::: Vector DependencyInfoKHR)
-                  -> io ()
-cmdWaitEvents2KHR = cmdWaitEvents2KHRSafeOrUnsafe mkVkCmdWaitEvents2KHRUnsafe
-
--- | A variant of 'cmdWaitEvents2KHR' which makes a *safe* FFI call
-cmdWaitEvents2KHRSafe :: forall io
-                       . (MonadIO io)
-                      => -- | @commandBuffer@ is the command buffer into which the command is
-                         -- recorded.
-                         CommandBuffer
-                      -> -- | @pEvents@ is a pointer to an array of @eventCount@ events to wait on.
-                         ("events" ::: Vector Event)
-                      -> -- | @pDependencyInfos@ is a pointer to an array of @eventCount@
-                         -- 'DependencyInfoKHR' structures, defining the second
-                         -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>.
-                         ("dependencyInfos" ::: Vector DependencyInfoKHR)
-                      -> io ()
-cmdWaitEvents2KHRSafe = cmdWaitEvents2KHRSafeOrUnsafe mkVkCmdWaitEvents2KHRSafe
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdPipelineBarrier2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> Ptr DependencyInfoKHR -> IO ()) -> Ptr CommandBuffer_T -> Ptr DependencyInfoKHR -> IO ()
-
--- | vkCmdPipelineBarrier2KHR - Insert a memory dependency
---
--- = Description
---
--- When 'cmdPipelineBarrier2KHR' is submitted to a queue, it defines memory
--- dependencies between commands that were submitted before it, and those
--- submitted after it.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- of each memory dependency defined by @pDependencyInfo@ are applied to
--- operations that occurred earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- of each memory dependency defined by @pDependencyInfo@ are applied to
--- operations that occurred later in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
---
--- If 'cmdPipelineBarrier2KHR' is recorded within a render pass instance,
--- the synchronization scopes are
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-barriers-subpass-self-dependencies limited to operations within the same subpass>.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-pDependencies-02285# If
---     'cmdPipelineBarrier2KHR' is called within a render pass instance,
---     the render pass /must/ have been created with at least one
---     'Vulkan.Core10.Pass.SubpassDependency' instance in
---     'Vulkan.Core10.Pass.RenderPassCreateInfo'::@pDependencies@ that
---     expresses a dependency from the current subpass to itself, with
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scopes>
---     and
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
---     that are all supersets of the scopes defined in this command
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-bufferMemoryBarrierCount-01178# If
---     'cmdPipelineBarrier2KHR' is called within a render pass instance, it
---     /must/ not include any buffer memory barriers
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-image-04073# If
---     'cmdPipelineBarrier2KHR' is called within a render pass instance,
---     the @image@ member of any image memory barrier included in this
---     command /must/ be an attachment used in the current subpass both as
---     an input attachment, and as either a color or depth\/stencil
---     attachment
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-oldLayout-01181# If
---     'cmdPipelineBarrier2KHR' is called within a render pass instance,
---     the @oldLayout@ and @newLayout@ members of any image memory barrier
---     included in this command /must/ be equal
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-srcQueueFamilyIndex-01182# If
---     'cmdPipelineBarrier2KHR' is called within a render pass instance,
---     the @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ members of any
---     image memory barrier included in this command /must/ be equal
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-dependencyFlags-01186# If
---     'cmdPipelineBarrier2KHR' is called outside of a render pass
---     instance,
---     'Vulkan.Core10.Enums.DependencyFlagBits.DEPENDENCY_VIEW_LOCAL_BIT'
---     /must/ not be included in the dependency flags
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-None-06191# If
---     'cmdPipelineBarrier2KHR' is called within a render pass instance,
---     the render pass /must/ not have been started with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-synchronization2-03848# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-srcStageMask-03849# The
---     @srcStageMask@ member of any element of the @pMemoryBarriers@,
---     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfo@ /must/ only include pipeline stages valid for the
---     queue family that was used to create the command pool that
---     @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-dstStageMask-03850# The
---     @dstStageMask@ member of any element of the @pMemoryBarriers@,
---     @pBufferMemoryBarriers@, or @pImageMemoryBarriers@ members of
---     @pDependencyInfo@ /must/ only include pipeline stages valid for the
---     queue family that was used to create the command pool that
---     @commandBuffer@ was allocated from
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-pDependencyInfo-parameter#
---     @pDependencyInfo@ /must/ be a valid pointer to a valid
---     'DependencyInfoKHR' structure
---
--- -   #VUID-vkCmdPipelineBarrier2KHR-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-vkCmdPipelineBarrier2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- == Host Synchronization
---
--- -   Host access to @commandBuffer@ /must/ be externally synchronized
---
--- -   Host access to the 'Vulkan.Core10.Handles.CommandPool' that
---     @commandBuffer@ was allocated from /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'DependencyInfoKHR'
-cmdPipelineBarrier2KHR :: forall io
-                        . (MonadIO io)
-                       => -- | @commandBuffer@ is the command buffer into which the command is
-                          -- recorded.
-                          CommandBuffer
-                       -> -- | @pDependencyInfo@ is a pointer to a 'DependencyInfoKHR' structure
-                          -- defining the scopes of this operation.
-                          DependencyInfoKHR
-                       -> io ()
-cmdPipelineBarrier2KHR commandBuffer dependencyInfo = liftIO . evalContT $ do
-  let vkCmdPipelineBarrier2KHRPtr = pVkCmdPipelineBarrier2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  lift $ unless (vkCmdPipelineBarrier2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdPipelineBarrier2KHR is null" Nothing Nothing
-  let vkCmdPipelineBarrier2KHR' = mkVkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHRPtr
-  pDependencyInfo <- ContT $ withCStruct (dependencyInfo)
-  lift $ traceAroundEvent "vkCmdPipelineBarrier2KHR" (vkCmdPipelineBarrier2KHR' (commandBufferHandle (commandBuffer)) pDependencyInfo)
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkQueueSubmit2KHR
-  :: FunPtr (Ptr Queue_T -> Word32 -> Ptr (SomeStruct SubmitInfo2KHR) -> Fence -> IO Result) -> Ptr Queue_T -> Word32 -> Ptr (SomeStruct SubmitInfo2KHR) -> Fence -> IO Result
-
--- | vkQueueSubmit2KHR - Submits command buffers to a queue
---
--- = Description
---
--- 'queueSubmit2KHR' is a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-submission queue submission command>,
--- with each batch defined by an element of @pSubmits@.
---
--- Semaphore operations submitted with 'queueSubmit2KHR' have additional
--- ordering constraints compared to other submission commands, with
--- dependencies involving previous and subsequent queue operations.
--- Information about these additional constraints can be found in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores semaphore>
--- section of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.
---
--- If any command buffer submitted to this queue is in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>,
--- it is moved to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>.
--- Once execution of all submissions of a command buffer complete, it moves
--- from the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>,
--- back to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle executable state>.
--- If a command buffer was recorded with the
--- 'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT'
--- flag, it instead moves back to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle invalid state>.
---
--- If 'queueSubmit2KHR' fails, it /may/ return
--- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_HOST_MEMORY' or
--- 'Vulkan.Core10.Enums.Result.ERROR_OUT_OF_DEVICE_MEMORY'. If it does, the
--- implementation /must/ ensure that the state and contents of any
--- resources or synchronization primitives referenced by the submitted
--- command buffers and any semaphores referenced by @pSubmits@ is
--- unaffected by the call or its failure. If 'queueSubmit2KHR' fails in
--- such a way that the implementation is unable to make that guarantee, the
--- implementation /must/ return
--- 'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'. See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#devsandqueues-lost-device Lost Device>.
---
--- == Valid Usage
---
--- -   #VUID-vkQueueSubmit2KHR-fence-04894# If @fence@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be
---     unsignaled
---
--- -   #VUID-vkQueueSubmit2KHR-fence-04895# If @fence@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ not be
---     associated with any other queue command that has not yet completed
---     execution on that queue
---
--- -   #VUID-vkQueueSubmit2KHR-synchronization2-03866# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03867# If a command recorded
---     into the @commandBuffer@ member of any element of the
---     @pCommandBufferInfos@ member of any element of @pSubmits@ referenced
---     an 'Vulkan.Core10.Handles.Event', that event /must/ not be
---     referenced by a command that has been submitted to another queue and
---     is still in the /pending state/
---
--- -   #VUID-vkQueueSubmit2KHR-semaphore-03868# The @semaphore@ member of
---     any binary semaphore element of the @pSignalSemaphoreInfos@ member
---     of any element of @pSubmits@ /must/ be unsignaled when the semaphore
---     signal operation it defines is executed on the device
---
--- -   #VUID-vkQueueSubmit2KHR-stageMask-03869# The @stageMask@ member of
---     any element of the @pSignalSemaphoreInfos@ member of any element of
---     @pSubmits@ /must/ only include pipeline stages that are supported by
---     the queue family which @queue@ belongs to
---
--- -   #VUID-vkQueueSubmit2KHR-stageMask-03870# The @stageMask@ member of
---     any element of the @pWaitSemaphoreInfos@ member of any element of
---     @pSubmits@ /must/ only include pipeline stages that are supported by
---     the queue family which @queue@ belongs to
---
--- -   #VUID-vkQueueSubmit2KHR-semaphore-03871# When a semaphore wait
---     operation for a binary semaphore is executed, as defined by the
---     @semaphore@ member of any element of the @pWaitSemaphoreInfos@
---     member of any element of @pSubmits@, there /must/ be no other queues
---     waiting on the same semaphore
---
--- -   #VUID-vkQueueSubmit2KHR-semaphore-03872# The @semaphore@ member of
---     any element of the @pWaitSemaphoreInfos@ member of any element of
---     @pSubmits@ /must/ be semaphores that are signaled, or have
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>
---     previously submitted for execution
---
--- -   #VUID-vkQueueSubmit2KHR-semaphore-03873# Any @semaphore@ member of
---     any element of the @pWaitSemaphoreInfos@ member of any element of
---     @pSubmits@ that was created with a
---     'Vulkan.Extensions.VK_KHR_timeline_semaphore.SemaphoreTypeKHR' of
---     'Vulkan.Extensions.VK_KHR_timeline_semaphore.SEMAPHORE_TYPE_BINARY_KHR'
---     /must/ reference a semaphore signal operation that has been
---     submitted for execution and any semaphore signal operations on which
---     it depends (if any) /must/ have also been submitted for execution
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03874# The @commandBuffer@
---     member of any element of the @pCommandBufferInfos@ member of any
---     element of @pSubmits@ /must/ be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03875# If a command recorded
---     into the @commandBuffer@ member of any element of the
---     @pCommandBufferInfos@ member of any element of @pSubmits@ was not
---     recorded with the
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',
---     it /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03876# Any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
---     into the @commandBuffer@ member of any element of the
---     @pCommandBufferInfos@ member of any element of @pSubmits@ /must/ be
---     in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending or executable state>
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03877# If any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-secondary secondary command buffers recorded>
---     into the @commandBuffer@ member of any element of the
---     @pCommandBufferInfos@ member of any element of @pSubmits@ was not
---     recorded with the
---     'Vulkan.Core10.Enums.CommandBufferUsageFlagBits.COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT',
---     it /must/ not be in the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#commandbuffers-lifecycle pending state>
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03878# The @commandBuffer@
---     member of any element of the @pCommandBufferInfos@ member of any
---     element of @pSubmits@ /must/ have been allocated from a
---     'Vulkan.Core10.Handles.CommandPool' that was created for the same
---     queue family @queue@ belongs to
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03879# If a command recorded
---     into the @commandBuffer@ member of any element of the
---     @pCommandBufferInfos@ member of any element of @pSubmits@ includes a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire Queue Family Transfer Acquire Operation>,
---     there /must/ exist a previously submitted
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release Queue Family Transfer Release Operation>
---     on a queue in the queue family identified by the acquire operation,
---     with parameters matching the acquire operation as defined in the
---     definition of such
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire acquire operations>,
---     and which happens before the acquire operation
---
--- -   #VUID-vkQueueSubmit2KHR-commandBuffer-03880# If a command recorded
---     into the @commandBuffer@ member of any element of the
---     @pCommandBufferInfos@ member of any element of @pSubmits@ was a
---     'Vulkan.Core10.CommandBufferBuilding.cmdBeginQuery' whose
---     @queryPool@ was created with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_PERFORMANCE_QUERY_KHR',
---     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#profiling-lock profiling lock>
---     /must/ have been held continuously on the
---     'Vulkan.Core10.Handles.Device' that @queue@ was retrieved from,
---     throughout recording of those command buffers
---
--- -   #VUID-vkQueueSubmit2KHR-queue-06447# If @queue@ was not created with
---     'Vulkan.Core10.Enums.DeviceQueueCreateFlagBits.DEVICE_QUEUE_CREATE_PROTECTED_BIT',
---     the @flags@ member of any element of @pSubmits@ /must/ not include
---     'SUBMIT_PROTECTED_BIT_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkQueueSubmit2KHR-queue-parameter# @queue@ /must/ be a valid
---     'Vulkan.Core10.Handles.Queue' handle
---
--- -   #VUID-vkQueueSubmit2KHR-pSubmits-parameter# If @submitCount@ is not
---     @0@, @pSubmits@ /must/ be a valid pointer to an array of
---     @submitCount@ valid 'SubmitInfo2KHR' structures
---
--- -   #VUID-vkQueueSubmit2KHR-fence-parameter# If @fence@ is not
---     'Vulkan.Core10.APIConstants.NULL_HANDLE', @fence@ /must/ be a valid
---     'Vulkan.Core10.Handles.Fence' handle
---
--- -   #VUID-vkQueueSubmit2KHR-commonparent# Both of @fence@, and @queue@
---     that are valid handles of non-ignored parameters /must/ have been
---     created, allocated, or retrieved from the same
---     'Vulkan.Core10.Handles.Device'
---
--- == Host Synchronization
---
--- -   Host access to @queue@ /must/ be externally synchronized
---
--- -   Host access to @fence@ /must/ be externally synchronized
---
--- == Command Properties
---
--- \'
---
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
--- | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkCommandBufferLevel Command Buffer Levels> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vkCmdBeginRenderPass Render Pass Scope> | <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | -                                                                                                                          | -                                                                                                                      | Any                                                                                                                   |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- == 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'
---
---     -   'Vulkan.Core10.Enums.Result.ERROR_DEVICE_LOST'
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.Fence', 'Vulkan.Core10.Handles.Queue',
--- 'SubmitInfo2KHR'
-queueSubmit2KHR :: forall io
-                 . (MonadIO io)
-                => -- | @queue@ is the queue that the command buffers will be submitted to.
-                   Queue
-                -> -- | @pSubmits@ is a pointer to an array of 'SubmitInfo2KHR' structures, each
-                   -- specifying a command buffer submission batch.
-                   ("submits" ::: Vector (SomeStruct SubmitInfo2KHR))
-                -> -- | @fence@ is an /optional/ handle to a fence to be signaled once all
-                   -- submitted command buffers have completed execution. If @fence@ is not
-                   -- 'Vulkan.Core10.APIConstants.NULL_HANDLE', it defines a
-                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-fences-signaling fence signal operation>.
-                   Fence
-                -> io ()
-queueSubmit2KHR queue submits fence = liftIO . evalContT $ do
-  let vkQueueSubmit2KHRPtr = pVkQueueSubmit2KHR (case queue of Queue{deviceCmds} -> deviceCmds)
-  lift $ unless (vkQueueSubmit2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkQueueSubmit2KHR is null" Nothing Nothing
-  let vkQueueSubmit2KHR' = mkVkQueueSubmit2KHR vkQueueSubmit2KHRPtr
-  pPSubmits <- ContT $ allocaBytes @(SubmitInfo2KHR _) ((Data.Vector.length (submits)) * 64)
-  Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPSubmits `plusPtr` (64 * (i)) :: Ptr (SubmitInfo2KHR _))) (e) . ($ ())) (submits)
-  r <- lift $ traceAroundEvent "vkQueueSubmit2KHR" (vkQueueSubmit2KHR' (queueHandle (queue)) ((fromIntegral (Data.Vector.length $ (submits)) :: Word32)) (forgetExtensions (pPSubmits)) (fence))
-  lift $ when (r < SUCCESS) (throwIO (VulkanException r))
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWriteTimestamp2KHR
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> QueryPool -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> QueryPool -> Word32 -> IO ()
-
--- | vkCmdWriteTimestamp2KHR - Write a device timestamp into a query object
---
--- = Description
---
--- When 'cmdWriteTimestamp2KHR' is submitted to a queue, it defines an
--- execution dependency on commands that were submitted before it, and
--- writes a timestamp to a query pool.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes all commands that occur earlier in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-submission-order submission order>.
--- The synchronization scope is limited to operations on the pipeline stage
--- specified by @stage@.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- includes only the timestamp write operation.
---
--- When the timestamp value is written, the availability status of the
--- query is set to available.
---
--- Note
---
--- If an implementation is unable to detect completion and latch the timer
--- at any specific stage of the pipeline, it /may/ instead do so at any
--- logically later stage.
---
--- Comparisons between timestamps are not meaningful if the timestamps are
--- written by commands submitted to different queues.
---
--- Note
---
--- An example of such a comparison is subtracting an older timestamp from a
--- newer one to determine the execution time of a sequence of commands.
---
--- If 'cmdWriteTimestamp2KHR' is called while executing a render pass
--- instance that has multiview enabled, the timestamp uses N consecutive
--- query indices in the query pool (starting at @query@) where N is the
--- number of bits set in the view mask of the subpass the command is
--- executed in. The resulting query values are determined by an
--- implementation-dependent choice of one of the following behaviors:
---
--- -   The first query is a timestamp value and (if more than one bit is
---     set in the view mask) zero is written to the remaining queries. If
---     two timestamps are written in the same subpass, the sum of the
---     execution time of all views between those commands is the difference
---     between the first query written by each command.
---
--- -   All N queries are timestamp values. If two timestamps are written in
---     the same subpass, the sum of the execution time of all views between
---     those commands is the sum of the difference between corresponding
---     queries written by each command. The difference between
---     corresponding queries /may/ be the execution time of a single view.
---
--- In either case, the application /can/ sum the differences between all N
--- queries to determine the total execution time.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-synchronization2-03858# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03859# @stage@ /must/ only
---     include a single pipeline stage
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-03860# @stage@ /must/ only
---     include stages valid for the queue family that was used to create
---     the command pool that @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-queryPool-03861# @queryPool@ /must/
---     have been created with a @queryType@ of
---     'Vulkan.Core10.Enums.QueryType.QUERY_TYPE_TIMESTAMP'
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-queryPool-03862# The query identified
---     by @queryPool@ and @query@ /must/ be /unavailable/
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-timestampValidBits-03863# The command
---     pool’s queue family /must/ support a non-zero @timestampValidBits@
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-query-04903# @query@ /must/ be less
---     than the number of queries in @queryPool@
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-None-03864# All queries used by the
---     command /must/ be unavailable
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-query-03865# If
---     'cmdWriteTimestamp2KHR' is called within a render pass instance, the
---     sum of @query@ and the number of bits set in the current subpass’s
---     view mask /must/ be less than or equal to the number of queries in
---     @queryPool@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-stage-parameter# @stage@ /must/ be a
---     valid combination of 'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-queryPool-parameter# @queryPool@
---     /must/ be a valid 'Vulkan.Core10.Handles.QueryPool' handle
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-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-vkCmdWriteTimestamp2KHR-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, compute, decode,
---     or encode operations
---
--- -   #VUID-vkCmdWriteTimestamp2KHR-commonparent# Both of @commandBuffer@,
---     and @queryPool@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- |                                                                                                                            |                                                                                                                        | Decode                                                                                                                |
--- |                                                                                                                            |                                                                                                                        | Encode                                                                                                                |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.CommandBuffer', 'PipelineStageFlags2KHR',
--- 'Vulkan.Core10.Handles.QueryPool'
-cmdWriteTimestamp2KHR :: forall io
-                       . (MonadIO io)
-                      => -- | @commandBuffer@ is the command buffer into which the command will be
-                         -- recorded.
-                         CommandBuffer
-                      -> -- | @stage@ specifies a stage of the pipeline.
-                         PipelineStageFlags2KHR
-                      -> -- | @queryPool@ is the query pool that will manage the timestamp.
-                         QueryPool
-                      -> -- | @query@ is the query within the query pool that will contain the
-                         -- timestamp.
-                         ("query" ::: Word32)
-                      -> io ()
-cmdWriteTimestamp2KHR commandBuffer stage queryPool query = liftIO $ do
-  let vkCmdWriteTimestamp2KHRPtr = pVkCmdWriteTimestamp2KHR (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdWriteTimestamp2KHRPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteTimestamp2KHR is null" Nothing Nothing
-  let vkCmdWriteTimestamp2KHR' = mkVkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHRPtr
-  traceAroundEvent "vkCmdWriteTimestamp2KHR" (vkCmdWriteTimestamp2KHR' (commandBufferHandle (commandBuffer)) (stage) (queryPool) (query))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkCmdWriteBufferMarker2AMD
-  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> Buffer -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags2KHR -> Buffer -> DeviceSize -> Word32 -> IO ()
-
--- | vkCmdWriteBufferMarker2AMD - Execute a pipelined write of a marker value
--- into a buffer
---
--- = Description
---
--- The command will write the 32-bit marker value into the buffer only
--- after all preceding commands have finished executing up to at least the
--- specified pipeline stage. This includes the completion of other
--- preceding 'cmdWriteBufferMarker2AMD' commands so long as their specified
--- pipeline stages occur either at the same time or earlier than this
--- command’s specified @stage@.
---
--- While consecutive buffer marker writes with the same @stage@ parameter
--- implicitly complete in submission order, memory and execution
--- dependencies between buffer marker writes and other operations /must/
--- still be explicitly ordered using synchronization commands. The access
--- scope for buffer marker writes falls under the
--- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT', and the
--- pipeline stages for identifying the synchronization scope /must/ include
--- both @stage@ and
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'.
---
--- Note
---
--- Similar to 'cmdWriteTimestamp2KHR', if an implementation is unable to
--- write a marker at any specific pipeline stage, it /may/ instead do so at
--- any logically later stage.
---
--- Note
---
--- Implementations /may/ only support a limited number of pipelined marker
--- write operations in flight at a given time. Thus an excessive number of
--- marker write operations /may/ degrade command execution performance.
---
--- == Valid Usage
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @stage@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-synchronization2-03893# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-synchronization2 synchronization2>
---     feature /must/ be enabled
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03894# @stage@ /must/ include
---     only a single pipeline stage
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03895# @stage@ /must/ include
---     only stages that are valid for the queue family that was used to
---     create the command pool that @commandBuffer@ was allocated from
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03896# @dstOffset@ /must/
---     be less than or equal to the size of @dstBuffer@ minus @4@
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03897# @dstBuffer@ /must/
---     have been created with the
---     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
---     usage flag
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03898# If @dstBuffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03899# @dstOffset@ /must/
---     be a multiple of @4@
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-parameter# @stage@ /must/ be
---     a valid combination of 'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-parameter# @dstBuffer@
---     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-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-vkCmdWriteBufferMarker2AMD-commandBuffer-cmdpool# The
---     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
---     allocated from /must/ support transfer, graphics, or compute
---     operations
---
--- -   #VUID-vkCmdWriteBufferMarker2AMD-commonparent# Both of
---     @commandBuffer@, and @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
--- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
--- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
--- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
--- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
--- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'PipelineStageFlags2KHR'
-cmdWriteBufferMarker2AMD :: forall io
-                          . (MonadIO io)
-                         => -- | @commandBuffer@ is the command buffer into which the command will be
-                            -- recorded.
-                            CommandBuffer
-                         -> -- | @stage@ specifies the pipeline stage whose completion triggers the
-                            -- marker write.
-                            PipelineStageFlags2KHR
-                         -> -- | @dstBuffer@ is the buffer where the marker will be written.
-                            ("dstBuffer" ::: Buffer)
-                         -> -- | @dstOffset@ is the byte offset into the buffer where the marker will be
-                            -- written.
-                            ("dstOffset" ::: DeviceSize)
-                         -> -- | @marker@ is the 32-bit value of the marker.
-                            ("marker" ::: Word32)
-                         -> io ()
-cmdWriteBufferMarker2AMD commandBuffer stage dstBuffer dstOffset marker = liftIO $ do
-  let vkCmdWriteBufferMarker2AMDPtr = pVkCmdWriteBufferMarker2AMD (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
-  unless (vkCmdWriteBufferMarker2AMDPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteBufferMarker2AMD is null" Nothing Nothing
-  let vkCmdWriteBufferMarker2AMD' = mkVkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMDPtr
-  traceAroundEvent "vkCmdWriteBufferMarker2AMD" (vkCmdWriteBufferMarker2AMD' (commandBufferHandle (commandBuffer)) (stage) (dstBuffer) (dstOffset) (marker))
-  pure $ ()
-
-
-foreign import ccall
-#if !defined(SAFE_FOREIGN_CALLS)
-  unsafe
-#endif
-  "dynamic" mkVkGetQueueCheckpointData2NV
-  :: FunPtr (Ptr Queue_T -> Ptr Word32 -> Ptr CheckpointData2NV -> IO ()) -> Ptr Queue_T -> Ptr Word32 -> Ptr CheckpointData2NV -> IO ()
-
--- | vkGetQueueCheckpointData2NV - Retrieve diagnostic checkpoint data
---
--- = Description
---
--- If @pCheckpointData@ is @NULL@, then the number of checkpoint markers
--- available is returned in @pCheckpointDataCount@. Otherwise,
--- @pCheckpointDataCount@ /must/ point to a variable set by the user to the
--- number of elements in the @pCheckpointData@ array, and on return the
--- variable is overwritten with the number of structures actually written
--- to @pCheckpointData@.
---
--- If @pCheckpointDataCount@ is less than the number of checkpoint markers
--- available, at most @pCheckpointDataCount@ structures will be written.
---
--- == Valid Usage
---
--- -   #VUID-vkGetQueueCheckpointData2NV-queue-03892# The device that
---     @queue@ belongs to /must/ be in the lost state
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-vkGetQueueCheckpointData2NV-queue-parameter# @queue@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Queue' handle
---
--- -   #VUID-vkGetQueueCheckpointData2NV-pCheckpointDataCount-parameter#
---     @pCheckpointDataCount@ /must/ be a valid pointer to a @uint32_t@
---     value
---
--- -   #VUID-vkGetQueueCheckpointData2NV-pCheckpointData-parameter# If the
---     value referenced by @pCheckpointDataCount@ is not @0@, and
---     @pCheckpointData@ is not @NULL@, @pCheckpointData@ /must/ be a valid
---     pointer to an array of @pCheckpointDataCount@ 'CheckpointData2NV'
---     structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
--- 'CheckpointData2NV', 'Vulkan.Core10.Handles.Queue'
-getQueueCheckpointData2NV :: forall io
-                           . (MonadIO io)
-                          => -- | @queue@ is the 'Vulkan.Core10.Handles.Queue' object the caller would
-                             -- like to retrieve checkpoint data for
-                             Queue
-                          -> io (("checkpointData" ::: Vector CheckpointData2NV))
-getQueueCheckpointData2NV queue = liftIO . evalContT $ do
-  let vkGetQueueCheckpointData2NVPtr = pVkGetQueueCheckpointData2NV (case queue of Queue{deviceCmds} -> deviceCmds)
-  lift $ unless (vkGetQueueCheckpointData2NVPtr /= nullFunPtr) $
-    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetQueueCheckpointData2NV is null" Nothing Nothing
-  let vkGetQueueCheckpointData2NV' = mkVkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NVPtr
-  let queue' = queueHandle (queue)
-  pPCheckpointDataCount <- ContT $ bracket (callocBytes @Word32 4) free
-  lift $ traceAroundEvent "vkGetQueueCheckpointData2NV" (vkGetQueueCheckpointData2NV' queue' (pPCheckpointDataCount) (nullPtr))
-  pCheckpointDataCount <- lift $ peek @Word32 pPCheckpointDataCount
-  pPCheckpointData <- ContT $ bracket (callocBytes @CheckpointData2NV ((fromIntegral (pCheckpointDataCount)) * 32)) free
-  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPCheckpointData `advancePtrBytes` (i * 32) :: Ptr CheckpointData2NV) . ($ ())) [0..(fromIntegral (pCheckpointDataCount)) - 1]
-  lift $ traceAroundEvent "vkGetQueueCheckpointData2NV" (vkGetQueueCheckpointData2NV' queue' (pPCheckpointDataCount) ((pPCheckpointData)))
-  pCheckpointDataCount' <- lift $ peek @Word32 pPCheckpointDataCount
-  pCheckpointData' <- lift $ generateM (fromIntegral (pCheckpointDataCount')) (\i -> peekCStruct @CheckpointData2NV (((pPCheckpointData) `advancePtrBytes` (32 * (i)) :: Ptr CheckpointData2NV)))
-  pure $ (pCheckpointData')
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV"
-pattern PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV"
-pattern ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV"
-pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV"
-pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV"
-pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV"
-pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
-
-
--- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR"
-pattern PIPELINE_STAGE_2_TRANSFER_BIT_KHR = PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR
-
-
--- | VkMemoryBarrier2KHR - Structure specifying a global memory barrier
---
--- = Description
---
--- This structure defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
--- affecting all device memory.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- described by this structure include only operations and memory accesses
--- specified by @srcStageMask@ and @srcAccessMask@.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- described by this structure include only operations and memory accesses
--- specified by @dstStageMask@ and @dstAccessMask@.
---
--- == Valid Usage
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03900# If @srcAccessMask@
---     includes 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03901# If @srcAccessMask@
---     includes 'ACCESS_2_INDEX_READ_BIT_KHR', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03902# If @srcAccessMask@
---     includes 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03903# If @srcAccessMask@
---     includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03904# If @srcAccessMask@
---     includes 'ACCESS_2_UNIFORM_READ_BIT_KHR', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03905# If @srcAccessMask@
---     includes 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03906# If @srcAccessMask@
---     includes 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03907# If @srcAccessMask@
---     includes 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03908# If @srcAccessMask@
---     includes 'ACCESS_2_SHADER_READ_BIT_KHR', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or one of
---     the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03909# If @srcAccessMask@
---     includes 'ACCESS_2_SHADER_WRITE_BIT_KHR', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03910# If @srcAccessMask@
---     includes 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03911# If @srcAccessMask@
---     includes 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03912# If @srcAccessMask@
---     includes 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03913# If @srcAccessMask@
---     includes 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03914# If @srcAccessMask@
---     includes 'ACCESS_2_TRANSFER_READ_BIT_KHR', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03915# If @srcAccessMask@
---     includes 'ACCESS_2_TRANSFER_WRITE_BIT_KHR', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_CLEAR_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03916# If @srcAccessMask@
---     includes 'ACCESS_2_HOST_READ_BIT_KHR', @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03917# If @srcAccessMask@
---     includes 'ACCESS_2_HOST_WRITE_BIT_KHR', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03918# If @srcAccessMask@
---     includes 'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03919# If @srcAccessMask@
---     includes 'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03920# If @srcAccessMask@
---     includes 'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-04747# If @srcAccessMask@
---     includes 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03922# If @srcAccessMask@
---     includes 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03923# If @srcAccessMask@
---     includes 'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-04994# If @srcAccessMask@
---     includes 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03924# If @srcAccessMask@
---     includes 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03925# If @srcAccessMask@
---     includes 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03926# If @srcAccessMask@
---     includes 'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03927# If @srcAccessMask@
---     includes 'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-03928# If @srcAccessMask@
---     includes 'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-06256# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     is not enabled and @srcAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @srcStageMask@
---     /must/ not include any of the @VK_PIPELINE_STAGE_*_SHADER_BIT@
---     stages except 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03900# If @dstAccessMask@
---     includes 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03901# If @dstAccessMask@
---     includes 'ACCESS_2_INDEX_READ_BIT_KHR', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03902# If @dstAccessMask@
---     includes 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03903# If @dstAccessMask@
---     includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03904# If @dstAccessMask@
---     includes 'ACCESS_2_UNIFORM_READ_BIT_KHR', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03905# If @dstAccessMask@
---     includes 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03906# If @dstAccessMask@
---     includes 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03907# If @dstAccessMask@
---     includes 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03908# If @dstAccessMask@
---     includes 'ACCESS_2_SHADER_READ_BIT_KHR', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or one of
---     the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03909# If @dstAccessMask@
---     includes 'ACCESS_2_SHADER_WRITE_BIT_KHR', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03910# If @dstAccessMask@
---     includes 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03911# If @dstAccessMask@
---     includes 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03912# If @dstAccessMask@
---     includes 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03913# If @dstAccessMask@
---     includes 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03914# If @dstAccessMask@
---     includes 'ACCESS_2_TRANSFER_READ_BIT_KHR', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03915# If @dstAccessMask@
---     includes 'ACCESS_2_TRANSFER_WRITE_BIT_KHR', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_CLEAR_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03916# If @dstAccessMask@
---     includes 'ACCESS_2_HOST_READ_BIT_KHR', @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03917# If @dstAccessMask@
---     includes 'ACCESS_2_HOST_WRITE_BIT_KHR', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03918# If @dstAccessMask@
---     includes 'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03919# If @dstAccessMask@
---     includes 'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03920# If @dstAccessMask@
---     includes 'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-04747# If @dstAccessMask@
---     includes 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03922# If @dstAccessMask@
---     includes 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03923# If @dstAccessMask@
---     includes 'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-04994# If @dstAccessMask@
---     includes 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03924# If @dstAccessMask@
---     includes 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03925# If @dstAccessMask@
---     includes 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03926# If @dstAccessMask@
---     includes 'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03927# If @dstAccessMask@
---     includes 'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-03928# If @dstAccessMask@
---     includes 'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-06256# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     is not enabled and @dstAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @dstStageMask@
---     /must/ not include any of the @VK_PIPELINE_STAGE_*_SHADER_BIT@
---     stages except 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkMemoryBarrier2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR'
---
--- -   #VUID-VkMemoryBarrier2KHR-srcStageMask-parameter# @srcStageMask@
---     /must/ be a valid combination of 'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkMemoryBarrier2KHR-srcAccessMask-parameter# @srcAccessMask@
---     /must/ be a valid combination of 'AccessFlagBits2KHR' values
---
--- -   #VUID-VkMemoryBarrier2KHR-dstStageMask-parameter# @dstStageMask@
---     /must/ be a valid combination of 'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkMemoryBarrier2KHR-dstAccessMask-parameter# @dstAccessMask@
---     /must/ be a valid combination of 'AccessFlagBits2KHR' values
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'AccessFlags2KHR', 'DependencyInfoKHR', 'PipelineStageFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data MemoryBarrier2KHR = MemoryBarrier2KHR
-  { -- | @srcStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
-    -- be included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
-    srcStageMask :: PipelineStageFlags2KHR
-  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
-    -- included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
-    srcAccessMask :: AccessFlags2KHR
-  , -- | @dstStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
-    -- be included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
-    dstStageMask :: PipelineStageFlags2KHR
-  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
-    -- included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
-    dstAccessMask :: AccessFlags2KHR
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (MemoryBarrier2KHR)
-#endif
-deriving instance Show MemoryBarrier2KHR
-
-instance ToCStruct MemoryBarrier2KHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p MemoryBarrier2KHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (srcStageMask)
-    poke ((p `plusPtr` 24 :: Ptr AccessFlags2KHR)) (srcAccessMask)
-    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
-    poke ((p `plusPtr` 40 :: Ptr AccessFlags2KHR)) (dstAccessMask)
-    f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct MemoryBarrier2KHR where
-  peekCStruct p = do
-    srcStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 24 :: Ptr AccessFlags2KHR))
-    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
-    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 40 :: Ptr AccessFlags2KHR))
-    pure $ MemoryBarrier2KHR
-             srcStageMask srcAccessMask dstStageMask dstAccessMask
-
-instance Storable MemoryBarrier2KHR where
-  sizeOf ~_ = 48
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero MemoryBarrier2KHR where
-  zero = MemoryBarrier2KHR
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkImageMemoryBarrier2KHR - Structure specifying an image memory barrier
---
--- = Description
---
--- This structure defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
--- limited to an image subresource range, and /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
--- for that subresource range.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- described by this structure include only operations and memory accesses
--- specified by @srcStageMask@ and @srcAccessMask@.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- described by this structure include only operations and memory accesses
--- specified by @dstStageMask@ and @dstAccessMask@.
---
--- Both
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
--- are limited to only memory accesses to @image@ in the subresource range
--- defined by @subresourceRange@.
---
--- If @image@ was created with
--- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
--- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, this memory
--- barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>.
--- When executed on a queue in the family identified by
--- @srcQueueFamilyIndex@, this barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
--- for the specified image subresource range, and the second
--- synchronization and access scopes do not synchronize operations on that
--- queue. When executed on a queue in the family identified by
--- @dstQueueFamilyIndex@, this barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
--- for the specified image subresource range, and the first synchronization
--- and access scopes do not synchronize operations on that queue.
---
--- A
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
--- is also defined if the values are not equal, and either is one of the
--- special queue family values reserved for external memory ownership
--- transfers, as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.
--- A
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
--- is defined when @dstQueueFamilyIndex@ is one of those values, and a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
--- is defined when @srcQueueFamilyIndex@ is one of those values.
---
--- If @oldLayout@ is not equal to @newLayout@, then the memory barrier
--- defines an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>
--- for the specified image subresource range. If this memory barrier
--- defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>,
--- the layout transition is only executed once between the queues.
---
--- Note
---
--- When the old and new layout are equal, the layout values are ignored -
--- data is preserved no matter what values are specified, or what layout
--- the image is currently in.
---
--- If @image@ has a multi-planar format and the image is /disjoint/, then
--- including
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT' in the
--- @aspectMask@ member of @subresourceRange@ is equivalent to including
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT', and
--- (for three-plane formats only)
--- 'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'.
---
--- == Valid Usage
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03900# If
---     @srcAccessMask@ includes 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03901# If
---     @srcAccessMask@ includes 'ACCESS_2_INDEX_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03902# If
---     @srcAccessMask@ includes 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03903# If
---     @srcAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03904# If
---     @srcAccessMask@ includes 'ACCESS_2_UNIFORM_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03905# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03906# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03907# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03908# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or one of
---     the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03909# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03910# If
---     @srcAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03911# If
---     @srcAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03912# If
---     @srcAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03913# If
---     @srcAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03914# If
---     @srcAccessMask@ includes 'ACCESS_2_TRANSFER_READ_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03915# If
---     @srcAccessMask@ includes 'ACCESS_2_TRANSFER_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_CLEAR_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03916# If
---     @srcAccessMask@ includes 'ACCESS_2_HOST_READ_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03917# If
---     @srcAccessMask@ includes 'ACCESS_2_HOST_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03918# If
---     @srcAccessMask@ includes
---     'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03919# If
---     @srcAccessMask@ includes
---     'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03920# If
---     @srcAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-04747# If
---     @srcAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03922# If
---     @srcAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03923# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-04994# If
---     @srcAccessMask@ includes 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03924# If
---     @srcAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03925# If
---     @srcAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03926# If
---     @srcAccessMask@ includes
---     'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03927# If
---     @srcAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @srcStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-03928# If
---     @srcAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR', @srcStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-06256# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     is not enabled and @srcAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @srcStageMask@
---     /must/ not include any of the @VK_PIPELINE_STAGE_*_SHADER_BIT@
---     stages except 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03900# If
---     @dstAccessMask@ includes 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03901# If
---     @dstAccessMask@ includes 'ACCESS_2_INDEX_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03902# If
---     @dstAccessMask@ includes 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03903# If
---     @dstAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03904# If
---     @dstAccessMask@ includes 'ACCESS_2_UNIFORM_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03905# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03906# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03907# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03908# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or one of
---     the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03909# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03910# If
---     @dstAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03911# If
---     @dstAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03912# If
---     @dstAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03913# If
---     @dstAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03914# If
---     @dstAccessMask@ includes 'ACCESS_2_TRANSFER_READ_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03915# If
---     @dstAccessMask@ includes 'ACCESS_2_TRANSFER_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_CLEAR_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03916# If
---     @dstAccessMask@ includes 'ACCESS_2_HOST_READ_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03917# If
---     @dstAccessMask@ includes 'ACCESS_2_HOST_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03918# If
---     @dstAccessMask@ includes
---     'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03919# If
---     @dstAccessMask@ includes
---     'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03920# If
---     @dstAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-04747# If
---     @dstAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03922# If
---     @dstAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03923# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-04994# If
---     @dstAccessMask@ includes 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03924# If
---     @dstAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03925# If
---     @dstAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03926# If
---     @dstAccessMask@ includes
---     'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03927# If
---     @dstAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @dstStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-03928# If
---     @dstAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR', @dstStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-06256# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     is not enabled and @dstAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @dstStageMask@
---     /must/ not include any of the @VK_PIPELINE_STAGE_*_SHADER_BIT@
---     stages except 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-subresourceRange-01486#
---     @subresourceRange.baseMipLevel@ /must/ be less than the @mipLevels@
---     specified in 'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was
---     created
---
--- -   #VUID-VkImageMemoryBarrier2KHR-subresourceRange-01724# If
---     @subresourceRange.levelCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_MIP_LEVELS',
---     @subresourceRange.baseMipLevel@ + @subresourceRange.levelCount@
---     /must/ be less than or equal to the @mipLevels@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
---
--- -   #VUID-VkImageMemoryBarrier2KHR-subresourceRange-01488#
---     @subresourceRange.baseArrayLayer@ /must/ be less than the
---     @arrayLayers@ specified in 'Vulkan.Core10.Image.ImageCreateInfo'
---     when @image@ was created
---
--- -   #VUID-VkImageMemoryBarrier2KHR-subresourceRange-01725# If
---     @subresourceRange.layerCount@ is not
---     'Vulkan.Core10.APIConstants.REMAINING_ARRAY_LAYERS',
---     @subresourceRange.baseArrayLayer@ + @subresourceRange.layerCount@
---     /must/ be less than or equal to the @arrayLayers@ specified in
---     'Vulkan.Core10.Image.ImageCreateInfo' when @image@ was created
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-01932# If @image@ is non-sparse
---     then it /must/ be bound completely and contiguously to a single
---     'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01208# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01209# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01210# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01211# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT' or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01212# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_SRC_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01213# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_TRANSFER_DST_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01197# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     @oldLayout@ /must/ be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or the
---     current layout of the image subresources affected by the barrier
---
--- -   #VUID-VkImageMemoryBarrier2KHR-newLayout-01198# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     @newLayout@ /must/ not be
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED' or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01658# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-01659# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04065# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL'
---     then @image@ /must/ have been created with at least one of
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04066# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---     set
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04067# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL'
---     then @image@ /must/ have been created with at least one of
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04068# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---     set
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-03938# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR',
---     @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_COLOR_ATTACHMENT_BIT'
---     or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-03939# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR',
---     @image@ /must/ have been created with at least one of
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT',
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_SAMPLED_BIT', or
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_INPUT_ATTACHMENT_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-02088# If
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     and @oldLayout@ or @newLayout@ is
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR'
---     then @image@ /must/ have been created with
---     'Vulkan.Core10.Enums.ImageUsageFlagBits.IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
---     set
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-01671# If @image@ has a
---     single-plane color format or is not /disjoint/, then the
---     @aspectMask@ member of @subresourceRange@ /must/ be
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-01672# If @image@ has a
---     multi-planar format and the image is /disjoint/, then the
---     @aspectMask@ member of @subresourceRange@ /must/ include either at
---     least one of
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_0_BIT',
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_1_BIT',
---     and
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT';
---     or /must/ include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_COLOR_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-01673# If @image@ has a
---     multi-planar format with only two planes, then the @aspectMask@
---     member of @subresourceRange@ /must/ not include
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_PLANE_2_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-03319# If @image@ has a
---     depth\/stencil format with both depth and stencil and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
---     feature is enabled, then the @aspectMask@ member of
---     @subresourceRange@ /must/ include either or both
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-03320# If @image@ has a
---     depth\/stencil format with both depth and stencil and the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-separateDepthStencilLayouts separateDepthStencilLayouts>
---     feature is not enabled, then the @aspectMask@ member of
---     @subresourceRange@ /must/ include both
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_DEPTH_BIT' and
---     'Vulkan.Core10.Enums.ImageAspectFlagBits.IMAGE_ASPECT_STENCIL_BIT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcQueueFamilyIndex-04070# If
---     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
---     least one /must/ not be a special queue family reserved for external
---     memory ownership transfers, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-04071# If @image@ was created
---     with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
---     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
---     special queue family values reserved for external memory transfers,
---     the other /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-04072# If @image@ was created
---     with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ both be valid
---     queue families, or one of the special queue family values reserved
---     for external memory transfers, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03854# If either
---     @srcStageMask@ or @dstStageMask@ includes
---     'PIPELINE_STAGE_2_HOST_BIT_KHR', @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ /must/ be equal
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-03855# If @srcStageMask@
---     includes 'PIPELINE_STAGE_2_HOST_BIT_KHR', and @srcQueueFamilyIndex@
---     and @dstQueueFamilyIndex@ define a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>
---     or @oldLayout@ and @newLayout@ define an
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>,
---     @oldLayout@ /must/ be one of
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_PREINITIALIZED',
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED', or
---     'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_GENERAL'
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkImageMemoryBarrier2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-pNext-pNext# @pNext@ /must/ be @NULL@
---     or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_sample_locations.SampleLocationsInfoEXT'
---
--- -   #VUID-VkImageMemoryBarrier2KHR-sType-unique# The @sType@ value of
---     each struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcStageMask-parameter#
---     @srcStageMask@ /must/ be a valid combination of
---     'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkImageMemoryBarrier2KHR-srcAccessMask-parameter#
---     @srcAccessMask@ /must/ be a valid combination of
---     'AccessFlagBits2KHR' values
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstStageMask-parameter#
---     @dstStageMask@ /must/ be a valid combination of
---     'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkImageMemoryBarrier2KHR-dstAccessMask-parameter#
---     @dstAccessMask@ /must/ be a valid combination of
---     'AccessFlagBits2KHR' values
---
--- -   #VUID-VkImageMemoryBarrier2KHR-oldLayout-parameter# @oldLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-VkImageMemoryBarrier2KHR-newLayout-parameter# @newLayout@
---     /must/ be a valid 'Vulkan.Core10.Enums.ImageLayout.ImageLayout'
---     value
---
--- -   #VUID-VkImageMemoryBarrier2KHR-image-parameter# @image@ /must/ be a
---     valid 'Vulkan.Core10.Handles.Image' handle
---
--- -   #VUID-VkImageMemoryBarrier2KHR-subresourceRange-parameter#
---     @subresourceRange@ /must/ be a valid
---     'Vulkan.Core10.ImageView.ImageSubresourceRange' structure
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'AccessFlags2KHR', 'DependencyInfoKHR', 'Vulkan.Core10.Handles.Image',
--- 'Vulkan.Core10.Enums.ImageLayout.ImageLayout',
--- 'Vulkan.Core10.ImageView.ImageSubresourceRange',
--- 'PipelineStageFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data ImageMemoryBarrier2KHR (es :: [Type]) = ImageMemoryBarrier2KHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @srcStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
-    -- be included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
-    srcStageMask :: PipelineStageFlags2KHR
-  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
-    -- included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
-    srcAccessMask :: AccessFlags2KHR
-  , -- | @dstStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
-    -- be included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
-    dstStageMask :: PipelineStageFlags2KHR
-  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
-    -- included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
-    dstAccessMask :: AccessFlags2KHR
-  , -- | @oldLayout@ is the old layout in an
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
-    oldLayout :: ImageLayout
-  , -- | @newLayout@ is the new layout in an
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transition>.
-    newLayout :: ImageLayout
-  , -- | @srcQueueFamilyIndex@ is the source queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
-    srcQueueFamilyIndex :: Word32
-  , -- | @dstQueueFamilyIndex@ is the destination queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
-    dstQueueFamilyIndex :: Word32
-  , -- | @image@ is a handle to the image affected by this barrier.
-    image :: Image
-  , -- | @subresourceRange@ describes the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-views image subresource range>
-    -- within @image@ that is affected by this barrier.
-    subresourceRange :: ImageSubresourceRange
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (ImageMemoryBarrier2KHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (ImageMemoryBarrier2KHR es)
-
-instance Extensible ImageMemoryBarrier2KHR where
-  extensibleTypeName = "ImageMemoryBarrier2KHR"
-  setNext ImageMemoryBarrier2KHR{..} next' = ImageMemoryBarrier2KHR{next = next', ..}
-  getNext ImageMemoryBarrier2KHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends ImageMemoryBarrier2KHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @SampleLocationsInfoEXT = Just f
-    | otherwise = Nothing
-
-instance (Extendss ImageMemoryBarrier2KHR es, PokeChain es) => ToCStruct (ImageMemoryBarrier2KHR es) where
-  withCStruct x f = allocaBytes 96 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p ImageMemoryBarrier2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (srcStageMask)
-    lift $ poke ((p `plusPtr` 24 :: Ptr AccessFlags2KHR)) (srcAccessMask)
-    lift $ poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
-    lift $ poke ((p `plusPtr` 40 :: Ptr AccessFlags2KHR)) (dstAccessMask)
-    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (oldLayout)
-    lift $ poke ((p `plusPtr` 52 :: Ptr ImageLayout)) (newLayout)
-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (srcQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (dstQueueFamilyIndex)
-    lift $ poke ((p `plusPtr` 64 :: Ptr Image)) (image)
-    lift $ poke ((p `plusPtr` 72 :: Ptr ImageSubresourceRange)) (subresourceRange)
-    lift $ f
-  cStructSize = 96
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ poke ((p `plusPtr` 48 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 52 :: Ptr ImageLayout)) (zero)
-    lift $ poke ((p `plusPtr` 56 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 60 :: Ptr Word32)) (zero)
-    lift $ poke ((p `plusPtr` 64 :: Ptr Image)) (zero)
-    lift $ poke ((p `plusPtr` 72 :: Ptr ImageSubresourceRange)) (zero)
-    lift $ f
-
-instance (Extendss ImageMemoryBarrier2KHR es, PeekChain es) => FromCStruct (ImageMemoryBarrier2KHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    srcStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 24 :: Ptr AccessFlags2KHR))
-    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
-    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 40 :: Ptr AccessFlags2KHR))
-    oldLayout <- peek @ImageLayout ((p `plusPtr` 48 :: Ptr ImageLayout))
-    newLayout <- peek @ImageLayout ((p `plusPtr` 52 :: Ptr ImageLayout))
-    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 56 :: Ptr Word32))
-    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 60 :: Ptr Word32))
-    image <- peek @Image ((p `plusPtr` 64 :: Ptr Image))
-    subresourceRange <- peekCStruct @ImageSubresourceRange ((p `plusPtr` 72 :: Ptr ImageSubresourceRange))
-    pure $ ImageMemoryBarrier2KHR
-             next srcStageMask srcAccessMask dstStageMask dstAccessMask oldLayout newLayout srcQueueFamilyIndex dstQueueFamilyIndex image subresourceRange
-
-instance es ~ '[] => Zero (ImageMemoryBarrier2KHR es) where
-  zero = ImageMemoryBarrier2KHR
-           ()
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkBufferMemoryBarrier2KHR - Structure specifying a buffer memory barrier
---
--- = Description
---
--- This structure defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>
--- limited to a range of a buffer, and /can/ define a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
--- for that range.
---
--- The first
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- described by this structure include only operations and memory accesses
--- specified by @srcStageMask@ and @srcAccessMask@.
---
--- The second
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes synchronization scope>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scope>
--- described by this structure include only operations and memory accesses
--- specified by @dstStageMask@ and @dstAccessMask@.
---
--- Both
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes access scopes>
--- are limited to only memory accesses to @buffer@ in the range defined by
--- @offset@ and @size@.
---
--- If @buffer@ was created with
--- 'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
--- @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, this memory
--- barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>.
--- When executed on a queue in the family identified by
--- @srcQueueFamilyIndex@, this barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
--- for the specified buffer range, and the second synchronization and
--- access scopes do not synchronize operations on that queue. When executed
--- on a queue in the family identified by @dstQueueFamilyIndex@, this
--- barrier defines a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
--- for the specified buffer range, and the first synchronization and access
--- scopes do not synchronize operations on that queue.
---
--- A
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operation>
--- is also defined if the values are not equal, and either is one of the
--- special queue family values reserved for external memory ownership
--- transfers, as described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers>.
--- A
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-release queue family release operation>
--- is defined when @dstQueueFamilyIndex@ is one of those values, and a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers-acquire queue family acquire operation>
--- is defined when @srcQueueFamilyIndex@ is one of those values.
---
--- == Valid Usage
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @srcStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03900# If
---     @srcAccessMask@ includes 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03901# If
---     @srcAccessMask@ includes 'ACCESS_2_INDEX_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03902# If
---     @srcAccessMask@ includes 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03903# If
---     @srcAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03904# If
---     @srcAccessMask@ includes 'ACCESS_2_UNIFORM_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03905# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03906# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03907# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03908# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or one of
---     the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03909# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADER_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03910# If
---     @srcAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03911# If
---     @srcAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03912# If
---     @srcAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03913# If
---     @srcAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03914# If
---     @srcAccessMask@ includes 'ACCESS_2_TRANSFER_READ_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03915# If
---     @srcAccessMask@ includes 'ACCESS_2_TRANSFER_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_CLEAR_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03916# If
---     @srcAccessMask@ includes 'ACCESS_2_HOST_READ_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03917# If
---     @srcAccessMask@ includes 'ACCESS_2_HOST_WRITE_BIT_KHR',
---     @srcStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03918# If
---     @srcAccessMask@ includes
---     'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03919# If
---     @srcAccessMask@ includes
---     'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03920# If
---     @srcAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT', @srcStageMask@ /must/
---     include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-04747# If
---     @srcAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03922# If
---     @srcAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03923# If
---     @srcAccessMask@ includes 'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-04994# If
---     @srcAccessMask@ includes 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03924# If
---     @srcAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03925# If
---     @srcAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
---     @srcStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03926# If
---     @srcAccessMask@ includes
---     'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT', @srcStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03927# If
---     @srcAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @srcStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-03928# If
---     @srcAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR', @srcStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-06256# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     is not enabled and @srcAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @srcStageMask@
---     /must/ not include any of the @VK_PIPELINE_STAGE_*_SHADER_BIT@
---     stages except 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @dstStageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03900# If
---     @dstAccessMask@ includes 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03901# If
---     @dstAccessMask@ includes 'ACCESS_2_INDEX_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03902# If
---     @dstAccessMask@ includes 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03903# If
---     @dstAccessMask@ includes 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR',
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03904# If
---     @dstAccessMask@ includes 'ACCESS_2_UNIFORM_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03905# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03906# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03907# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03908# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or one of
---     the @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03909# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADER_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03910# If
---     @dstAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03911# If
---     @dstAccessMask@ includes 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03912# If
---     @dstAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03913# If
---     @dstAccessMask@ includes
---     'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03914# If
---     @dstAccessMask@ includes 'ACCESS_2_TRANSFER_READ_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03915# If
---     @dstAccessMask@ includes 'ACCESS_2_TRANSFER_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_COPY_BIT_KHR',
---     'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR',
---     'PIPELINE_STAGE_2_CLEAR_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR',
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03916# If
---     @dstAccessMask@ includes 'ACCESS_2_HOST_READ_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03917# If
---     @dstAccessMask@ includes 'ACCESS_2_HOST_WRITE_BIT_KHR',
---     @dstStageMask@ /must/ include 'PIPELINE_STAGE_2_HOST_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03918# If
---     @dstAccessMask@ includes
---     'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03919# If
---     @dstAccessMask@ includes
---     'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03920# If
---     @dstAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT', @dstStageMask@ /must/
---     include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-04747# If
---     @dstAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR',
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03922# If
---     @dstAccessMask@ includes
---     'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03923# If
---     @dstAccessMask@ includes 'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV',
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-04994# If
---     @dstAccessMask@ includes 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03924# If
---     @dstAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03925# If
---     @dstAccessMask@ includes 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV',
---     @dstStageMask@ /must/ include
---     'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03926# If
---     @dstAccessMask@ includes
---     'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT', @dstStageMask@
---     /must/ include 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---     'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR', or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03927# If
---     @dstAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @dstStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR',
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR', or one of the
---     @VK_PIPELINE_STAGE_*_SHADER_BIT@ stages
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-03928# If
---     @dstAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR', @dstStageMask@
---     /must/ include
---     'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' or
---     'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-06256# If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-rayQuery rayQuery>
---     is not enabled and @dstAccessMask@ includes
---     'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR', @dstStageMask@
---     /must/ not include any of the @VK_PIPELINE_STAGE_*_SHADER_BIT@
---     stages except 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-offset-01187# @offset@ /must/ be
---     less than the size of @buffer@
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-size-01188# If @size@ is not equal
---     to 'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be greater
---     than @0@
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-size-01189# If @size@ is not equal
---     to 'Vulkan.Core10.APIConstants.WHOLE_SIZE', @size@ /must/ be less
---     than or equal to than the size of @buffer@ minus @offset@
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-buffer-01931# If @buffer@ is
---     non-sparse then it /must/ be bound completely and contiguously to a
---     single 'Vulkan.Core10.Handles.DeviceMemory' object
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcQueueFamilyIndex-04087# If
---     @srcQueueFamilyIndex@ is not equal to @dstQueueFamilyIndex@, at
---     least one /must/ not be a special queue family reserved for external
---     memory ownership transfers, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-buffer-04088# If @buffer@ was
---     created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_CONCURRENT',
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal, and
---     one of @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ is one of the
---     special queue family values reserved for external memory transfers,
---     the other /must/ be
---     'Vulkan.Core10.APIConstants.QUEUE_FAMILY_IGNORED'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-buffer-04089# If @buffer@ was
---     created with a sharing mode of
---     'Vulkan.Core10.Enums.SharingMode.SHARING_MODE_EXCLUSIVE', and
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ are not equal,
---     @srcQueueFamilyIndex@ and @dstQueueFamilyIndex@ /must/ both be valid
---     queue families, or one of the special queue family values reserved
---     for external memory transfers, as described in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers ???>
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-03851# If either
---     @srcStageMask@ or @dstStageMask@ includes
---     'PIPELINE_STAGE_2_HOST_BIT_KHR', @srcQueueFamilyIndex@ and
---     @dstQueueFamilyIndex@ /must/ be equal
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR'
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcStageMask-parameter#
---     @srcStageMask@ /must/ be a valid combination of
---     'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-srcAccessMask-parameter#
---     @srcAccessMask@ /must/ be a valid combination of
---     'AccessFlagBits2KHR' values
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstStageMask-parameter#
---     @dstStageMask@ /must/ be a valid combination of
---     'PipelineStageFlagBits2KHR' values
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-dstAccessMask-parameter#
---     @dstAccessMask@ /must/ be a valid combination of
---     'AccessFlagBits2KHR' values
---
--- -   #VUID-VkBufferMemoryBarrier2KHR-buffer-parameter# @buffer@ /must/ be
---     a valid 'Vulkan.Core10.Handles.Buffer' handle
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'AccessFlags2KHR', 'Vulkan.Core10.Handles.Buffer', 'DependencyInfoKHR',
--- 'Vulkan.Core10.FundamentalTypes.DeviceSize', 'PipelineStageFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data BufferMemoryBarrier2KHR = BufferMemoryBarrier2KHR
-  { -- | @srcStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
-    -- be included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes first synchronization scope>.
-    srcStageMask :: PipelineStageFlags2KHR
-  , -- | @srcAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
-    -- included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes first access scope>.
-    srcAccessMask :: AccessFlags2KHR
-  , -- | @dstStageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages to
-    -- be included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-scopes second synchronization scope>.
-    dstStageMask :: PipelineStageFlags2KHR
-  , -- | @dstAccessMask@ is a 'AccessFlags2KHR' mask of access flags to be
-    -- included in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-access-scopes second access scope>.
-    dstAccessMask :: AccessFlags2KHR
-  , -- | @srcQueueFamilyIndex@ is the source queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
-    srcQueueFamilyIndex :: Word32
-  , -- | @dstQueueFamilyIndex@ is the destination queue family for a
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family ownership transfer>.
-    dstQueueFamilyIndex :: Word32
-  , -- | @buffer@ is a handle to the buffer whose backing memory is affected by
-    -- the barrier.
-    buffer :: Buffer
-  , -- | @offset@ is an offset in bytes into the backing memory for @buffer@;
-    -- this is relative to the base offset as bound to the buffer (see
-    -- 'Vulkan.Core10.MemoryManagement.bindBufferMemory').
-    offset :: DeviceSize
-  , -- | @size@ is a size in bytes of the affected area of backing memory for
-    -- @buffer@, or 'Vulkan.Core10.APIConstants.WHOLE_SIZE' to use the range
-    -- from @offset@ to the end of the buffer.
-    size :: DeviceSize
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (BufferMemoryBarrier2KHR)
-#endif
-deriving instance Show BufferMemoryBarrier2KHR
-
-instance ToCStruct BufferMemoryBarrier2KHR where
-  withCStruct x f = allocaBytes 80 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p BufferMemoryBarrier2KHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (srcStageMask)
-    poke ((p `plusPtr` 24 :: Ptr AccessFlags2KHR)) (srcAccessMask)
-    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (dstStageMask)
-    poke ((p `plusPtr` 40 :: Ptr AccessFlags2KHR)) (dstAccessMask)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (srcQueueFamilyIndex)
-    poke ((p `plusPtr` 52 :: Ptr Word32)) (dstQueueFamilyIndex)
-    poke ((p `plusPtr` 56 :: Ptr Buffer)) (buffer)
-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (offset)
-    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (size)
-    f
-  cStructSize = 80
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 48 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 52 :: Ptr Word32)) (zero)
-    poke ((p `plusPtr` 56 :: Ptr Buffer)) (zero)
-    poke ((p `plusPtr` 64 :: Ptr DeviceSize)) (zero)
-    poke ((p `plusPtr` 72 :: Ptr DeviceSize)) (zero)
-    f
-
-instance FromCStruct BufferMemoryBarrier2KHR where
-  peekCStruct p = do
-    srcStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    srcAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 24 :: Ptr AccessFlags2KHR))
-    dstStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
-    dstAccessMask <- peek @AccessFlags2KHR ((p `plusPtr` 40 :: Ptr AccessFlags2KHR))
-    srcQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    dstQueueFamilyIndex <- peek @Word32 ((p `plusPtr` 52 :: Ptr Word32))
-    buffer <- peek @Buffer ((p `plusPtr` 56 :: Ptr Buffer))
-    offset <- peek @DeviceSize ((p `plusPtr` 64 :: Ptr DeviceSize))
-    size <- peek @DeviceSize ((p `plusPtr` 72 :: Ptr DeviceSize))
-    pure $ BufferMemoryBarrier2KHR
-             srcStageMask srcAccessMask dstStageMask dstAccessMask srcQueueFamilyIndex dstQueueFamilyIndex buffer offset size
-
-instance Storable BufferMemoryBarrier2KHR where
-  sizeOf ~_ = 80
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero BufferMemoryBarrier2KHR where
-  zero = BufferMemoryBarrier2KHR
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkDependencyInfoKHR - Structure specifying dependency information for a
--- synchronization command
---
--- = Description
---
--- This structure defines a set of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependencies>,
--- as well as
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-queue-transfers queue family transfer operations>
--- and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-image-layout-transitions image layout transitions>.
---
--- Each member of @pMemoryBarriers@, @pBufferMemoryBarriers@, and
--- @pImageMemoryBarriers@ defines a separate
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies-memory memory dependency>.
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkDependencyInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEPENDENCY_INFO_KHR'
---
--- -   #VUID-VkDependencyInfoKHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkDependencyInfoKHR-dependencyFlags-parameter#
---     @dependencyFlags@ /must/ be a valid combination of
---     'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' values
---
--- -   #VUID-VkDependencyInfoKHR-pMemoryBarriers-parameter# If
---     @memoryBarrierCount@ is not @0@, @pMemoryBarriers@ /must/ be a valid
---     pointer to an array of @memoryBarrierCount@ valid
---     'MemoryBarrier2KHR' structures
---
--- -   #VUID-VkDependencyInfoKHR-pBufferMemoryBarriers-parameter# If
---     @bufferMemoryBarrierCount@ is not @0@, @pBufferMemoryBarriers@
---     /must/ be a valid pointer to an array of @bufferMemoryBarrierCount@
---     valid 'BufferMemoryBarrier2KHR' structures
---
--- -   #VUID-VkDependencyInfoKHR-pImageMemoryBarriers-parameter# If
---     @imageMemoryBarrierCount@ is not @0@, @pImageMemoryBarriers@ /must/
---     be a valid pointer to an array of @imageMemoryBarrierCount@ valid
---     'ImageMemoryBarrier2KHR' structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'BufferMemoryBarrier2KHR',
--- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlags',
--- 'ImageMemoryBarrier2KHR', 'MemoryBarrier2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'cmdPipelineBarrier2KHR', 'cmdSetEvent2KHR', 'cmdWaitEvents2KHR'
-data DependencyInfoKHR = DependencyInfoKHR
-  { -- | @dependencyFlags@ is a bitmask of
-    -- 'Vulkan.Core10.Enums.DependencyFlagBits.DependencyFlagBits' specifying
-    -- how execution and memory dependencies are formed.
-    dependencyFlags :: DependencyFlags
-  , -- | @pMemoryBarriers@ is a pointer to an array of 'MemoryBarrier2KHR'
-    -- structures defining memory dependencies between any memory accesses.
-    memoryBarriers :: Vector MemoryBarrier2KHR
-  , -- | @pBufferMemoryBarriers@ is a pointer to an array of
-    -- 'BufferMemoryBarrier2KHR' structures defining memory dependencies
-    -- between buffer ranges.
-    bufferMemoryBarriers :: Vector BufferMemoryBarrier2KHR
-  , -- | @pImageMemoryBarriers@ is a pointer to an array of
-    -- 'ImageMemoryBarrier2KHR' structures defining memory dependencies between
-    -- image subresources.
-    imageMemoryBarriers :: Vector (SomeStruct ImageMemoryBarrier2KHR)
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (DependencyInfoKHR)
-#endif
-deriving instance Show DependencyInfoKHR
-
-instance ToCStruct DependencyInfoKHR where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p DependencyInfoKHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEPENDENCY_INFO_KHR)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    lift $ poke ((p `plusPtr` 16 :: Ptr DependencyFlags)) (dependencyFlags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (memoryBarriers)) :: Word32))
-    pPMemoryBarriers' <- ContT $ allocaBytes @MemoryBarrier2KHR ((Data.Vector.length (memoryBarriers)) * 48)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPMemoryBarriers' `plusPtr` (48 * (i)) :: Ptr MemoryBarrier2KHR) (e)) (memoryBarriers)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr MemoryBarrier2KHR))) (pPMemoryBarriers')
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (bufferMemoryBarriers)) :: Word32))
-    pPBufferMemoryBarriers' <- ContT $ allocaBytes @BufferMemoryBarrier2KHR ((Data.Vector.length (bufferMemoryBarriers)) * 80)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPBufferMemoryBarriers' `plusPtr` (80 * (i)) :: Ptr BufferMemoryBarrier2KHR) (e)) (bufferMemoryBarriers)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr BufferMemoryBarrier2KHR))) (pPBufferMemoryBarriers')
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (imageMemoryBarriers)) :: Word32))
-    pPImageMemoryBarriers' <- ContT $ allocaBytes @(ImageMemoryBarrier2KHR _) ((Data.Vector.length (imageMemoryBarriers)) * 96)
-    Data.Vector.imapM_ (\i e -> ContT $ pokeSomeCStruct (forgetExtensions (pPImageMemoryBarriers' `plusPtr` (96 * (i)) :: Ptr (ImageMemoryBarrier2KHR _))) (e) . ($ ())) (imageMemoryBarriers)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr (ImageMemoryBarrier2KHR _)))) (pPImageMemoryBarriers')
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_DEPENDENCY_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    f
-
-instance FromCStruct DependencyInfoKHR where
-  peekCStruct p = do
-    dependencyFlags <- peek @DependencyFlags ((p `plusPtr` 16 :: Ptr DependencyFlags))
-    memoryBarrierCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pMemoryBarriers <- peek @(Ptr MemoryBarrier2KHR) ((p `plusPtr` 24 :: Ptr (Ptr MemoryBarrier2KHR)))
-    pMemoryBarriers' <- generateM (fromIntegral memoryBarrierCount) (\i -> peekCStruct @MemoryBarrier2KHR ((pMemoryBarriers `advancePtrBytes` (48 * (i)) :: Ptr MemoryBarrier2KHR)))
-    bufferMemoryBarrierCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pBufferMemoryBarriers <- peek @(Ptr BufferMemoryBarrier2KHR) ((p `plusPtr` 40 :: Ptr (Ptr BufferMemoryBarrier2KHR)))
-    pBufferMemoryBarriers' <- generateM (fromIntegral bufferMemoryBarrierCount) (\i -> peekCStruct @BufferMemoryBarrier2KHR ((pBufferMemoryBarriers `advancePtrBytes` (80 * (i)) :: Ptr BufferMemoryBarrier2KHR)))
-    imageMemoryBarrierCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    pImageMemoryBarriers <- peek @(Ptr (ImageMemoryBarrier2KHR _)) ((p `plusPtr` 56 :: Ptr (Ptr (ImageMemoryBarrier2KHR _))))
-    pImageMemoryBarriers' <- generateM (fromIntegral imageMemoryBarrierCount) (\i -> peekSomeCStruct (forgetExtensions ((pImageMemoryBarriers `advancePtrBytes` (96 * (i)) :: Ptr (ImageMemoryBarrier2KHR _)))))
-    pure $ DependencyInfoKHR
-             dependencyFlags pMemoryBarriers' pBufferMemoryBarriers' pImageMemoryBarriers'
-
-instance Zero DependencyInfoKHR where
-  zero = DependencyInfoKHR
-           zero
-           mempty
-           mempty
-           mempty
-
-
--- | VkSemaphoreSubmitInfoKHR - Structure specifying a semaphore signal or
--- wait operation
---
--- = Description
---
--- Whether this structure defines a semaphore wait or signal operation is
--- defined by how it is used.
---
--- == Valid Usage
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03929# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03930# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' or
---     'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03931# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03932# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03933# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03934# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-03935# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-04956# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-04957# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-04995# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
---     feature is not enabled, @stageMask@ /must/ not contain
---     'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-device-03888# If the @device@ that
---     @semaphore@ was created on is not a device group, @deviceIndex@
---     /must/ be @0@
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-device-03889# If the @device@ that
---     @semaphore@ was created on is a device group, @deviceIndex@ /must/
---     be a valid device index
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR'
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-pNext-pNext# @pNext@ /must/ be @NULL@
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-semaphore-parameter# @semaphore@
---     /must/ be a valid 'Vulkan.Core10.Handles.Semaphore' handle
---
--- -   #VUID-VkSemaphoreSubmitInfoKHR-stageMask-parameter# @stageMask@
---     /must/ be a valid combination of 'PipelineStageFlagBits2KHR' values
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'PipelineStageFlags2KHR', 'Vulkan.Core10.Handles.Semaphore',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'SubmitInfo2KHR'
-data SemaphoreSubmitInfoKHR = SemaphoreSubmitInfoKHR
-  { -- | @semaphore@ is a 'Vulkan.Core10.Handles.Semaphore' affected by this
-    -- operation.
-    semaphore :: Semaphore
-  , -- | @value@ is either the value used to signal @semaphore@ or the value
-    -- waited on by @semaphore@, if @semaphore@ is a timeline semaphore.
-    -- Otherwise it is ignored.
-    value :: Word64
-  , -- | @stageMask@ is a 'PipelineStageFlags2KHR' mask of pipeline stages which
-    -- limit the first synchronization scope of a semaphore signal operation,
-    -- or second synchronization scope of a semaphore wait operation as
-    -- described in the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operation>
-    -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
-    -- sections of
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization the synchronization chapter>.
-    stageMask :: PipelineStageFlags2KHR
-  , -- | @deviceIndex@ is the index of the device within a device group that
-    -- executes the semaphore wait or signal operation.
-    deviceIndex :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SemaphoreSubmitInfoKHR)
-#endif
-deriving instance Show SemaphoreSubmitInfoKHR
-
-instance ToCStruct SemaphoreSubmitInfoKHR where
-  withCStruct x f = allocaBytes 48 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SemaphoreSubmitInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (semaphore)
-    poke ((p `plusPtr` 24 :: Ptr Word64)) (value)
-    poke ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR)) (stageMask)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (deviceIndex)
-    f
-  cStructSize = 48
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Semaphore)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word64)) (zero)
-    poke ((p `plusPtr` 40 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct SemaphoreSubmitInfoKHR where
-  peekCStruct p = do
-    semaphore <- peek @Semaphore ((p `plusPtr` 16 :: Ptr Semaphore))
-    value <- peek @Word64 ((p `plusPtr` 24 :: Ptr Word64))
-    stageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 32 :: Ptr PipelineStageFlags2KHR))
-    deviceIndex <- peek @Word32 ((p `plusPtr` 40 :: Ptr Word32))
-    pure $ SemaphoreSubmitInfoKHR
-             semaphore value stageMask deviceIndex
-
-instance Storable SemaphoreSubmitInfoKHR where
-  sizeOf ~_ = 48
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero SemaphoreSubmitInfoKHR where
-  zero = SemaphoreSubmitInfoKHR
-           zero
-           zero
-           zero
-           zero
-
-
--- | VkCommandBufferSubmitInfoKHR - Structure specifying a command buffer
--- submission
---
--- == Valid Usage
---
--- -   #VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-03890#
---     @commandBuffer@ /must/ not have been allocated with
---     'Vulkan.Core10.Enums.CommandBufferLevel.COMMAND_BUFFER_LEVEL_SECONDARY'
---
--- -   #VUID-VkCommandBufferSubmitInfoKHR-deviceMask-03891# If @deviceMask@
---     is not @0@, it /must/ be a valid device mask
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkCommandBufferSubmitInfoKHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR'
---
--- -   #VUID-VkCommandBufferSubmitInfoKHR-pNext-pNext# @pNext@ /must/ be
---     @NULL@
---
--- -   #VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-parameter#
---     @commandBuffer@ /must/ be a valid
---     'Vulkan.Core10.Handles.CommandBuffer' handle
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.Handles.CommandBuffer',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'SubmitInfo2KHR'
-data CommandBufferSubmitInfoKHR = CommandBufferSubmitInfoKHR
-  { -- | @commandBuffer@ is a 'Vulkan.Core10.Handles.CommandBuffer' to be
-    -- submitted for execution.
-    commandBuffer :: Ptr CommandBuffer_T
-  , -- | @deviceMask@ is a bitmask indicating which devices in a device group
-    -- execute the command buffer. A @deviceMask@ of @0@ is equivalent to
-    -- setting all bits corresponding to valid devices in the group to @1@.
-    deviceMask :: Word32
-  }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CommandBufferSubmitInfoKHR)
-#endif
-deriving instance Show CommandBufferSubmitInfoKHR
-
-instance ToCStruct CommandBufferSubmitInfoKHR where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CommandBufferSubmitInfoKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (commandBuffer)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (deviceMask)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T))) (zero)
-    poke ((p `plusPtr` 24 :: Ptr Word32)) (zero)
-    f
-
-instance FromCStruct CommandBufferSubmitInfoKHR where
-  peekCStruct p = do
-    commandBuffer <- peek @(Ptr CommandBuffer_T) ((p `plusPtr` 16 :: Ptr (Ptr CommandBuffer_T)))
-    deviceMask <- peek @Word32 ((p `plusPtr` 24 :: Ptr Word32))
-    pure $ CommandBufferSubmitInfoKHR
-             commandBuffer deviceMask
-
-instance Storable CommandBufferSubmitInfoKHR where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero CommandBufferSubmitInfoKHR where
-  zero = CommandBufferSubmitInfoKHR
-           zero
-           zero
-
-
--- | VkSubmitInfo2KHR - Structure specifying a queue submit operation
---
--- == Valid Usage
---
--- -   #VUID-VkSubmitInfo2KHR-semaphore-03881# If the same semaphore is
---     used as the @semaphore@ member of both an element of
---     @pSignalSemaphoreInfos@ and @pWaitSemaphoreInfos@, and that
---     semaphore is a timeline semaphore, the @value@ member of the
---     @pSignalSemaphoreInfos@ element /must/ be greater than the @value@
---     member of the @pWaitSemaphoreInfos@ element
---
--- -   #VUID-VkSubmitInfo2KHR-semaphore-03882# If the @semaphore@ member of
---     any element of @pSignalSemaphoreInfos@ is a timeline semaphore, the
---     @value@ member of that element /must/ have a value greater than the
---     current value of the semaphore when the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operation>
---     is executed
---
--- -   #VUID-VkSubmitInfo2KHR-semaphore-03883# If the @semaphore@ member of
---     any element of @pSignalSemaphoreInfos@ is a timeline semaphore, the
---     @value@ member of that element /must/ have a value which does not
---     differ from the current value of the semaphore or the value of any
---     outstanding semaphore wait or signal operation on that semaphore by
---     more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
---
--- -   #VUID-VkSubmitInfo2KHR-semaphore-03884# If the @semaphore@ member of
---     any element of @pWaitSemaphoreInfos@ is a timeline semaphore, the
---     @value@ member of that element /must/ have a value which does not
---     differ from the current value of the semaphore or the value of any
---     outstanding semaphore wait or signal operation on that semaphore by
---     more than
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-maxTimelineSemaphoreValueDifference maxTimelineSemaphoreValueDifference>
---
--- -   #VUID-VkSubmitInfo2KHR-flags-03886# If @flags@ includes
---     'SUBMIT_PROTECTED_BIT_KHR', all elements of @pCommandBuffers@ /must/
---     be protected command buffers
---
--- -   #VUID-VkSubmitInfo2KHR-flags-03887# If @flags@ does not include
---     'SUBMIT_PROTECTED_BIT_KHR', each element of @pCommandBuffers@ /must/
---     not be a protected command buffer
---
--- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06192# If any @commandBuffer@
---     member of an element of @pCommandBufferInfos@ contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension resumed render pass instances>,
---     they /must/ be suspended by a render pass instance earlier in
---     submission order within @pCommandBufferInfos@
---
--- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06010# If any @commandBuffer@
---     member of an element of @pCommandBufferInfos@ contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
---     they /must/ be resumed by a render pass instance later in submission
---     order within @pCommandBufferInfos@
---
--- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06011# If any @commandBuffer@
---     member of an element of @pCommandBufferInfos@ contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
---     there /must/ be no action or synchronization commands between that
---     render pass instance and the render pass instance that resumes it
---
--- -   #VUID-VkSubmitInfo2KHR-commandBuffer-06012# If any @commandBuffer@
---     member of an element of @pCommandBufferInfos@ contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
---     there /must/ be no render pass instances between that render pass
---     instance and the render pass instance that resumes it
---
--- -   #VUID-VkSubmitInfo2KHR-variableSampleLocations-06013# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-variableSampleLocations variableSampleLocations>
---     limit is not supported, and any @commandBuffer@ member of an element
---     of @pCommandBufferInfos@ contains any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-suspension suspended render pass instances>,
---     where a graphics pipeline has been bound, any pipelines bound in the
---     render pass instance that resumes it, or any subsequent render pass
---     instances that resume from that one and so on, /must/ use the same
---     sample locations
---
--- == Valid Usage (Implicit)
---
--- -   #VUID-VkSubmitInfo2KHR-sType-sType# @sType@ /must/ be
---     'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBMIT_INFO_2_KHR'
---
--- -   #VUID-VkSubmitInfo2KHR-pNext-pNext# Each @pNext@ member of any
---     structure (including this one) in the @pNext@ chain /must/ be either
---     @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_KHR_performance_query.PerformanceQuerySubmitInfoKHR',
---     'Vulkan.Extensions.VK_KHR_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoKHR',
---     or
---     'Vulkan.Extensions.VK_NV_win32_keyed_mutex.Win32KeyedMutexAcquireReleaseInfoNV'
---
--- -   #VUID-VkSubmitInfo2KHR-sType-unique# The @sType@ value of each
---     struct in the @pNext@ chain /must/ be unique
---
--- -   #VUID-VkSubmitInfo2KHR-flags-parameter# @flags@ /must/ be a valid
---     combination of 'SubmitFlagBitsKHR' values
---
--- -   #VUID-VkSubmitInfo2KHR-pWaitSemaphoreInfos-parameter# If
---     @waitSemaphoreInfoCount@ is not @0@, @pWaitSemaphoreInfos@ /must/ be
---     a valid pointer to an array of @waitSemaphoreInfoCount@ valid
---     'SemaphoreSubmitInfoKHR' structures
---
--- -   #VUID-VkSubmitInfo2KHR-pCommandBufferInfos-parameter# If
---     @commandBufferInfoCount@ is not @0@, @pCommandBufferInfos@ /must/ be
---     a valid pointer to an array of @commandBufferInfoCount@ valid
---     'CommandBufferSubmitInfoKHR' structures
---
--- -   #VUID-VkSubmitInfo2KHR-pSignalSemaphoreInfos-parameter# If
---     @signalSemaphoreInfoCount@ is not @0@, @pSignalSemaphoreInfos@
---     /must/ be a valid pointer to an array of @signalSemaphoreInfoCount@
---     valid 'SemaphoreSubmitInfoKHR' structures
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'CommandBufferSubmitInfoKHR', 'SemaphoreSubmitInfoKHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType', 'SubmitFlagsKHR',
--- 'queueSubmit2KHR'
-data SubmitInfo2KHR (es :: [Type]) = SubmitInfo2KHR
-  { -- | @pNext@ is @NULL@ or a pointer to a structure extending this structure.
-    next :: Chain es
-  , -- | @flags@ is a bitmask of 'SubmitFlagBitsKHR'.
-    flags :: SubmitFlagsKHR
-  , -- | @pWaitSemaphoreInfos@ is a pointer to an array of
-    -- 'SemaphoreSubmitInfoKHR' structures defining
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-waiting semaphore wait operations>.
-    waitSemaphoreInfos :: Vector SemaphoreSubmitInfoKHR
-  , -- | @pCommandBufferInfos@ is a pointer to an array of
-    -- 'CommandBufferSubmitInfoKHR' structures describing command buffers to
-    -- execute in the batch.
-    commandBufferInfos :: Vector CommandBufferSubmitInfoKHR
-  , -- | @pSignalSemaphoreInfos@ is a pointer to an array of
-    -- 'SemaphoreSubmitInfoKHR' describing
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-semaphores-signaling semaphore signal operations>.
-    signalSemaphoreInfos :: Vector SemaphoreSubmitInfoKHR
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (SubmitInfo2KHR (es :: [Type]))
-#endif
-deriving instance Show (Chain es) => Show (SubmitInfo2KHR es)
-
-instance Extensible SubmitInfo2KHR where
-  extensibleTypeName = "SubmitInfo2KHR"
-  setNext SubmitInfo2KHR{..} next' = SubmitInfo2KHR{next = next', ..}
-  getNext SubmitInfo2KHR{..} = next
-  extends :: forall e b proxy. Typeable e => proxy e -> (Extends SubmitInfo2KHR e => b) -> Maybe b
-  extends _ f
-    | Just Refl <- eqT @e @PerformanceQuerySubmitInfoKHR = Just f
-    | Just Refl <- eqT @e @Win32KeyedMutexAcquireReleaseInfoKHR = Just f
-    | Just Refl <- eqT @e @Win32KeyedMutexAcquireReleaseInfoNV = Just f
-    | otherwise = Nothing
-
-instance (Extendss SubmitInfo2KHR es, PokeChain es) => ToCStruct (SubmitInfo2KHR es) where
-  withCStruct x f = allocaBytes 64 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p SubmitInfo2KHR{..} f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBMIT_INFO_2_KHR)
-    pNext'' <- fmap castPtr . ContT $ withChain (next)
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext''
-    lift $ poke ((p `plusPtr` 16 :: Ptr SubmitFlagsKHR)) (flags)
-    lift $ poke ((p `plusPtr` 20 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (waitSemaphoreInfos)) :: Word32))
-    pPWaitSemaphoreInfos' <- ContT $ allocaBytes @SemaphoreSubmitInfoKHR ((Data.Vector.length (waitSemaphoreInfos)) * 48)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPWaitSemaphoreInfos' `plusPtr` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR) (e)) (waitSemaphoreInfos)
-    lift $ poke ((p `plusPtr` 24 :: Ptr (Ptr SemaphoreSubmitInfoKHR))) (pPWaitSemaphoreInfos')
-    lift $ poke ((p `plusPtr` 32 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (commandBufferInfos)) :: Word32))
-    pPCommandBufferInfos' <- ContT $ allocaBytes @CommandBufferSubmitInfoKHR ((Data.Vector.length (commandBufferInfos)) * 32)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPCommandBufferInfos' `plusPtr` (32 * (i)) :: Ptr CommandBufferSubmitInfoKHR) (e)) (commandBufferInfos)
-    lift $ poke ((p `plusPtr` 40 :: Ptr (Ptr CommandBufferSubmitInfoKHR))) (pPCommandBufferInfos')
-    lift $ poke ((p `plusPtr` 48 :: Ptr Word32)) ((fromIntegral (Data.Vector.length $ (signalSemaphoreInfos)) :: Word32))
-    pPSignalSemaphoreInfos' <- ContT $ allocaBytes @SemaphoreSubmitInfoKHR ((Data.Vector.length (signalSemaphoreInfos)) * 48)
-    lift $ Data.Vector.imapM_ (\i e -> poke (pPSignalSemaphoreInfos' `plusPtr` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR) (e)) (signalSemaphoreInfos)
-    lift $ poke ((p `plusPtr` 56 :: Ptr (Ptr SemaphoreSubmitInfoKHR))) (pPSignalSemaphoreInfos')
-    lift $ f
-  cStructSize = 64
-  cStructAlignment = 8
-  pokeZeroCStruct p f = evalContT $ do
-    lift $ poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_SUBMIT_INFO_2_KHR)
-    pNext' <- fmap castPtr . ContT $ withZeroChain @es
-    lift $ poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) pNext'
-    lift $ f
-
-instance (Extendss SubmitInfo2KHR es, PeekChain es) => FromCStruct (SubmitInfo2KHR es) where
-  peekCStruct p = do
-    pNext <- peek @(Ptr ()) ((p `plusPtr` 8 :: Ptr (Ptr ())))
-    next <- peekChain (castPtr pNext)
-    flags <- peek @SubmitFlagsKHR ((p `plusPtr` 16 :: Ptr SubmitFlagsKHR))
-    waitSemaphoreInfoCount <- peek @Word32 ((p `plusPtr` 20 :: Ptr Word32))
-    pWaitSemaphoreInfos <- peek @(Ptr SemaphoreSubmitInfoKHR) ((p `plusPtr` 24 :: Ptr (Ptr SemaphoreSubmitInfoKHR)))
-    pWaitSemaphoreInfos' <- generateM (fromIntegral waitSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfoKHR ((pWaitSemaphoreInfos `advancePtrBytes` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR)))
-    commandBufferInfoCount <- peek @Word32 ((p `plusPtr` 32 :: Ptr Word32))
-    pCommandBufferInfos <- peek @(Ptr CommandBufferSubmitInfoKHR) ((p `plusPtr` 40 :: Ptr (Ptr CommandBufferSubmitInfoKHR)))
-    pCommandBufferInfos' <- generateM (fromIntegral commandBufferInfoCount) (\i -> peekCStruct @CommandBufferSubmitInfoKHR ((pCommandBufferInfos `advancePtrBytes` (32 * (i)) :: Ptr CommandBufferSubmitInfoKHR)))
-    signalSemaphoreInfoCount <- peek @Word32 ((p `plusPtr` 48 :: Ptr Word32))
-    pSignalSemaphoreInfos <- peek @(Ptr SemaphoreSubmitInfoKHR) ((p `plusPtr` 56 :: Ptr (Ptr SemaphoreSubmitInfoKHR)))
-    pSignalSemaphoreInfos' <- generateM (fromIntegral signalSemaphoreInfoCount) (\i -> peekCStruct @SemaphoreSubmitInfoKHR ((pSignalSemaphoreInfos `advancePtrBytes` (48 * (i)) :: Ptr SemaphoreSubmitInfoKHR)))
-    pure $ SubmitInfo2KHR
-             next flags pWaitSemaphoreInfos' pCommandBufferInfos' pSignalSemaphoreInfos'
-
-instance es ~ '[] => Zero (SubmitInfo2KHR es) where
-  zero = SubmitInfo2KHR
-           ()
-           zero
-           mempty
-           mempty
-           mempty
-
-
--- | VkQueueFamilyCheckpointProperties2NV - Return structure for queue family
--- checkpoint information query
---
--- = Description
---
--- Additional queue family information can be queried by setting
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'::@pNext@
--- to point to a 'QueueFamilyCheckpointProperties2NV' structure.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
--- 'PipelineStageFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data QueueFamilyCheckpointProperties2NV = QueueFamilyCheckpointProperties2NV
-  { -- | @checkpointExecutionStageMask@ is a mask indicating which pipeline
-    -- stages the implementation can execute checkpoint markers in.
-    checkpointExecutionStageMask :: PipelineStageFlags2KHR }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (QueueFamilyCheckpointProperties2NV)
-#endif
-deriving instance Show QueueFamilyCheckpointProperties2NV
-
-instance ToCStruct QueueFamilyCheckpointProperties2NV where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p QueueFamilyCheckpointProperties2NV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (checkpointExecutionStageMask)
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (zero)
-    f
-
-instance FromCStruct QueueFamilyCheckpointProperties2NV where
-  peekCStruct p = do
-    checkpointExecutionStageMask <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    pure $ QueueFamilyCheckpointProperties2NV
-             checkpointExecutionStageMask
-
-instance Storable QueueFamilyCheckpointProperties2NV where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero QueueFamilyCheckpointProperties2NV where
-  zero = QueueFamilyCheckpointProperties2NV
-           zero
-
-
--- | VkCheckpointData2NV - Return structure for command buffer checkpoint
--- data
---
--- == Valid Usage (Implicit)
---
--- The stages at which a checkpoint marker /can/ be executed are
--- implementation-defined and /can/ be queried by calling
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
--- 'PipelineStageFlags2KHR',
--- 'Vulkan.Core10.Enums.StructureType.StructureType',
--- 'getQueueCheckpointData2NV'
-data CheckpointData2NV = CheckpointData2NV
-  { -- | @stage@ indicates a single pipeline stage which the checkpoint marker
-    -- data refers to.
-    stage :: PipelineStageFlags2KHR
-  , -- | @pCheckpointMarker@ contains the value of the last checkpoint marker
-    -- executed in the stage that @stage@ refers to.
-    checkpointMarker :: Ptr ()
-  }
-  deriving (Typeable)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (CheckpointData2NV)
-#endif
-deriving instance Show CheckpointData2NV
-
-instance ToCStruct CheckpointData2NV where
-  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p CheckpointData2NV{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (stage)
-    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (checkpointMarker)
-    f
-  cStructSize = 32
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR)) (zero)
-    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
-    f
-
-instance FromCStruct CheckpointData2NV where
-  peekCStruct p = do
-    stage <- peek @PipelineStageFlags2KHR ((p `plusPtr` 16 :: Ptr PipelineStageFlags2KHR))
-    pCheckpointMarker <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
-    pure $ CheckpointData2NV
-             stage pCheckpointMarker
-
-instance Storable CheckpointData2NV where
-  sizeOf ~_ = 32
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero CheckpointData2NV where
-  zero = CheckpointData2NV
-           zero
-           zero
-
-
--- | VkPhysicalDeviceSynchronization2FeaturesKHR - Structure describing
--- whether the implementation supports v2 synchronization commands
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceSynchronization2FeaturesKHR' 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. 'PhysicalDeviceSynchronization2FeaturesKHR' /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_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2FeaturesKHR
-  { -- | #features-synchronization2# @synchronization2@ indicates whether the
-    -- implementation supports the new set of synchronization commands
-    -- introduced in @VK_KHR_synchronization2@.
-    synchronization2 :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceSynchronization2FeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceSynchronization2FeaturesKHR
-
-instance ToCStruct PhysicalDeviceSynchronization2FeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceSynchronization2FeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (synchronization2))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
-
-instance FromCStruct PhysicalDeviceSynchronization2FeaturesKHR where
-  peekCStruct p = do
-    synchronization2 <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceSynchronization2FeaturesKHR
-             (bool32ToBool synchronization2)
-
-instance Storable PhysicalDeviceSynchronization2FeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceSynchronization2FeaturesKHR where
-  zero = PhysicalDeviceSynchronization2FeaturesKHR
-           zero
-
-
-type AccessFlags2KHR = AccessFlagBits2KHR
-
--- | VkAccessFlagBits2KHR - Access flags for VkAccessFlags2KHR
---
--- = Description
---
--- Note
---
--- In situations where an application wishes to select all access types for
--- a given set of pipeline stages, 'ACCESS_2_MEMORY_READ_BIT_KHR' or
--- 'ACCESS_2_MEMORY_WRITE_BIT_KHR' can be used. This is particularly useful
--- when specifying stages that only have a single access type.
---
--- Note
---
--- The 'AccessFlags2KHR' bitmask goes beyond the 31 individual bit flags
--- allowable within a C99 enum, which is how
--- 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits' is defined. The
--- first 31 values are common to both, and are interchangeable.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>
-newtype AccessFlagBits2KHR = AccessFlagBits2KHR Flags64
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'ACCESS_2_NONE_KHR' specifies no accesses.
-pattern ACCESS_2_NONE_KHR                               = AccessFlagBits2KHR 0x0000000000000000
--- | 'ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR' specifies read access to
--- command data read from indirect buffers as part of an indirect build,
--- trace, drawing or dispatch command. Such access occurs in the
--- 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR' pipeline stage.
-pattern ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000001
--- | 'ACCESS_2_INDEX_READ_BIT_KHR' specifies read access to an index buffer
--- as part of an indexed drawing command, bound by
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindIndexBuffer'. Such access
--- occurs in the 'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR' pipeline stage.
-pattern ACCESS_2_INDEX_READ_BIT_KHR                     = AccessFlagBits2KHR 0x0000000000000002
--- | 'ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR' specifies read access to a
--- vertex buffer as part of a drawing command, bound by
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBindVertexBuffers'. Such access
--- occurs in the 'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR' pipeline
--- stage.
-pattern ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000004
--- | 'ACCESS_2_UNIFORM_READ_BIT_KHR' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformbuffer uniform buffer>
--- in any shader pipeline stage.
-pattern ACCESS_2_UNIFORM_READ_BIT_KHR                   = AccessFlagBits2KHR 0x0000000000000008
--- | 'ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR' specifies read access to an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass input attachment>
--- within a render pass during subpass shading or fragment shading. Such
--- access occurs in the 'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI' or
--- 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR' pipeline stage.
-pattern ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000010
--- | 'ACCESS_2_SHADER_READ_BIT_KHR' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shader-binding-table shader binding table>
--- in any shader pipeline. In addition, it is equivalent to the logical OR
--- of:
---
--- -   'ACCESS_2_UNIFORM_READ_BIT_KHR'
---
--- -   'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR'
---
--- -   'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR'
-pattern ACCESS_2_SHADER_READ_BIT_KHR                    = AccessFlagBits2KHR 0x0000000000000020
--- | 'ACCESS_2_SHADER_WRITE_BIT_KHR' is equivalent to
--- 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR'.
-pattern ACCESS_2_SHADER_WRITE_BIT_KHR                   = AccessFlagBits2KHR 0x0000000000000040
--- | 'ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachment>,
--- such as via
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blending blending>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-logicop logic operations>,
--- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
--- It does not include
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
--- Such access occurs in the
--- 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' pipeline stage.
-pattern ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR          = AccessFlagBits2KHR 0x0000000000000080
--- | 'ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR' specifies write access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color, resolve, or depth\/stencil resolve attachment>
--- during a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass render pass>
--- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
--- Such access occurs in the
--- 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' pipeline stage.
-pattern ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR         = AccessFlagBits2KHR 0x0000000000000100
--- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR' specifies read access
--- to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
--- via
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
--- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>.
--- Such access occurs in the
--- 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR' or
--- 'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR' pipeline stages.
-pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR  = AccessFlagBits2KHR 0x0000000000000200
--- | 'ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR' specifies write access
--- to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass depth\/stencil attachment>,
--- via
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-ds-state depth or stencil operations>
--- or via certain
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>.
--- Such access occurs in the
--- 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR' or
--- 'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR' pipeline stages.
-pattern ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = AccessFlagBits2KHR 0x0000000000000400
--- | 'ACCESS_2_TRANSFER_READ_BIT_KHR' specifies read access to an image or
--- buffer in a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy>
--- operation. Such access occurs in the 'PIPELINE_STAGE_2_COPY_BIT_KHR',
--- 'PIPELINE_STAGE_2_BLIT_BIT_KHR', or 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR'
--- pipeline stages.
-pattern ACCESS_2_TRANSFER_READ_BIT_KHR                  = AccessFlagBits2KHR 0x0000000000000800
--- | 'ACCESS_2_TRANSFER_WRITE_BIT_KHR' specifies write access to an image or
--- buffer in a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy>
--- operation. Such access occurs in the 'PIPELINE_STAGE_2_COPY_BIT_KHR',
--- 'PIPELINE_STAGE_2_BLIT_BIT_KHR', 'PIPELINE_STAGE_2_CLEAR_BIT_KHR', or
--- 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR' pipeline stages.
-pattern ACCESS_2_TRANSFER_WRITE_BIT_KHR                 = AccessFlagBits2KHR 0x0000000000001000
--- | 'ACCESS_2_HOST_READ_BIT_KHR' specifies read access by a host operation.
--- Accesses of this type are not performed through a resource, but directly
--- on memory. Such access occurs in the 'PIPELINE_STAGE_2_HOST_BIT_KHR'
--- pipeline stage.
-pattern ACCESS_2_HOST_READ_BIT_KHR                      = AccessFlagBits2KHR 0x0000000000002000
--- | 'ACCESS_2_HOST_WRITE_BIT_KHR' specifies write access by a host
--- operation. Accesses of this type are not performed through a resource,
--- but directly on memory. Such access occurs in the
--- 'PIPELINE_STAGE_2_HOST_BIT_KHR' pipeline stage.
-pattern ACCESS_2_HOST_WRITE_BIT_KHR                     = AccessFlagBits2KHR 0x0000000000004000
--- | 'ACCESS_2_MEMORY_READ_BIT_KHR' specifies all read accesses. It is always
--- valid in any access mask, and is treated as equivalent to setting all
--- @READ@ access flags that are valid where it is used.
-pattern ACCESS_2_MEMORY_READ_BIT_KHR                    = AccessFlagBits2KHR 0x0000000000008000
--- | 'ACCESS_2_MEMORY_WRITE_BIT_KHR' specifies all write accesses. It is
--- always valid in any access mask, and is treated as equivalent to setting
--- all @WRITE@ access flags that are valid where it is used.
-pattern ACCESS_2_MEMORY_WRITE_BIT_KHR                   = AccessFlagBits2KHR 0x0000000000010000
--- | 'ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-uniformtexelbuffer uniform texel buffer>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-sampledimage sampled image>
--- in any shader pipeline stage.
-pattern ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR            = AccessFlagBits2KHR 0x0000000100000000
--- | 'ACCESS_2_SHADER_STORAGE_READ_BIT_KHR' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
--- in any shader pipeline stage.
-pattern ACCESS_2_SHADER_STORAGE_READ_BIT_KHR            = AccessFlagBits2KHR 0x0000000200000000
--- | 'ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR' specifies write access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagebuffer storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-physical-storage-buffer physical storage buffer>,
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storagetexelbuffer storage texel buffer>,
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#descriptorsets-storageimage storage image>
--- in any shader pipeline stage.
-pattern ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR           = AccessFlagBits2KHR 0x0000000400000000
--- | 'ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI' specifies read access to a
--- invocation mask image in the
--- 'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI' pipeline stage.
-pattern ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI        = AccessFlagBits2KHR 0x0000008000000000
--- | 'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT' specifies read
--- access to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass color attachments>,
--- including
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#framebuffer-blend-advanced advanced blend operations>.
--- Such access occurs in the
--- 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' pipeline stage.
-pattern ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = AccessFlagBits2KHR 0x0000000000080000
--- | 'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT' specifies read access to a
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapattachment fragment density map attachment>
--- during dynamic
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops fragment density map operations>.
--- Such access occurs in the
--- 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT' pipeline stage.
-pattern ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT      = AccessFlagBits2KHR 0x0000000001000000
--- | 'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR' specifies write access
--- to an acceleration structure or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
--- as part of a build or copy command. Such access occurs in the
--- 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' pipeline stage.
-pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR   = AccessFlagBits2KHR 0x0000000000400000
--- | 'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR' specifies read access to
--- an acceleration structure as part of a trace, build, or copy command, or
--- to an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-scratch acceleration structure scratch buffer>
--- as part of a build command. Such access occurs in the
--- 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR' pipeline stage or
--- 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' pipeline stage.
-pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR    = AccessFlagBits2KHR 0x0000000000200000
--- | 'ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR' specifies read
--- access to a fragment shading rate attachment during rasterization. Such
--- access occurs in the
--- 'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' pipeline
--- stage.
-pattern ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = AccessFlagBits2KHR 0x0000000000800000
--- | 'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV' specifies writes to the
--- target command buffer preprocess outputs. Such access occurs in the
--- 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' pipeline stage.
-pattern ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV        = AccessFlagBits2KHR 0x0000000000040000
--- | 'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV' specifies reads from buffer
--- inputs to
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
--- Such access occurs in the 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
--- pipeline stage.
-pattern ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV         = AccessFlagBits2KHR 0x0000000000020000
--- | 'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT' specifies read access to a
--- predicate as part of conditional rendering. Such access occurs in the
--- 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT' pipeline stage.
-pattern ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT     = AccessFlagBits2KHR 0x0000000000100000
--- | 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT' specifies write
--- access to a transform feedback counter buffer which is written when
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdEndTransformFeedbackEXT'
--- executes. Such access occurs in the
--- 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' pipeline stage.
-pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = AccessFlagBits2KHR 0x0000000008000000
--- | 'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT' specifies read access
--- to a transform feedback counter buffer which is read when
--- 'Vulkan.Extensions.VK_EXT_transform_feedback.cmdBeginTransformFeedbackEXT'
--- executes. Such access occurs in the
--- 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' pipeline stage.
-pattern ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = AccessFlagBits2KHR 0x0000000004000000
--- | 'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT' specifies write access to a
--- transform feedback buffer made when transform feedback is active. Such
--- access occurs in the 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
--- pipeline stage.
-pattern ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT       = AccessFlagBits2KHR 0x0000000002000000
-
-conNameAccessFlagBits2KHR :: String
-conNameAccessFlagBits2KHR = "AccessFlagBits2KHR"
-
-enumPrefixAccessFlagBits2KHR :: String
-enumPrefixAccessFlagBits2KHR = "ACCESS_2_"
-
-showTableAccessFlagBits2KHR :: [(AccessFlagBits2KHR, String)]
-showTableAccessFlagBits2KHR =
-  [ (ACCESS_2_NONE_KHR                              , "NONE_KHR")
-  , (ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR         , "INDIRECT_COMMAND_READ_BIT_KHR")
-  , (ACCESS_2_INDEX_READ_BIT_KHR                    , "INDEX_READ_BIT_KHR")
-  , (ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR         , "VERTEX_ATTRIBUTE_READ_BIT_KHR")
-  , (ACCESS_2_UNIFORM_READ_BIT_KHR                  , "UNIFORM_READ_BIT_KHR")
-  , (ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR         , "INPUT_ATTACHMENT_READ_BIT_KHR")
-  , (ACCESS_2_SHADER_READ_BIT_KHR                   , "SHADER_READ_BIT_KHR")
-  , (ACCESS_2_SHADER_WRITE_BIT_KHR                  , "SHADER_WRITE_BIT_KHR")
-  , (ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR         , "COLOR_ATTACHMENT_READ_BIT_KHR")
-  , (ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR        , "COLOR_ATTACHMENT_WRITE_BIT_KHR")
-  , (ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR , "DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR")
-  , (ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, "DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR")
-  , (ACCESS_2_TRANSFER_READ_BIT_KHR                 , "TRANSFER_READ_BIT_KHR")
-  , (ACCESS_2_TRANSFER_WRITE_BIT_KHR                , "TRANSFER_WRITE_BIT_KHR")
-  , (ACCESS_2_HOST_READ_BIT_KHR                     , "HOST_READ_BIT_KHR")
-  , (ACCESS_2_HOST_WRITE_BIT_KHR                    , "HOST_WRITE_BIT_KHR")
-  , (ACCESS_2_MEMORY_READ_BIT_KHR                   , "MEMORY_READ_BIT_KHR")
-  , (ACCESS_2_MEMORY_WRITE_BIT_KHR                  , "MEMORY_WRITE_BIT_KHR")
-  , (ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR           , "SHADER_SAMPLED_READ_BIT_KHR")
-  , (ACCESS_2_SHADER_STORAGE_READ_BIT_KHR           , "SHADER_STORAGE_READ_BIT_KHR")
-  , (ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR          , "SHADER_STORAGE_WRITE_BIT_KHR")
-  , (ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI       , "INVOCATION_MASK_READ_BIT_HUAWEI")
-  , (ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, "COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT")
-  , (ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT     , "FRAGMENT_DENSITY_MAP_READ_BIT_EXT")
-  , (ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR  , "ACCELERATION_STRUCTURE_WRITE_BIT_KHR")
-  , (ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR   , "ACCELERATION_STRUCTURE_READ_BIT_KHR")
-  , (ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR")
-  , (ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV       , "COMMAND_PREPROCESS_WRITE_BIT_NV")
-  , (ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV        , "COMMAND_PREPROCESS_READ_BIT_NV")
-  , (ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT    , "CONDITIONAL_RENDERING_READ_BIT_EXT")
-  , (ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT")
-  , (ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, "TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT")
-  , (ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT      , "TRANSFORM_FEEDBACK_WRITE_BIT_EXT")
-  ]
-
-instance Show AccessFlagBits2KHR where
-  showsPrec = enumShowsPrec enumPrefixAccessFlagBits2KHR
-                            showTableAccessFlagBits2KHR
-                            conNameAccessFlagBits2KHR
-                            (\(AccessFlagBits2KHR x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read AccessFlagBits2KHR where
-  readPrec =
-    enumReadPrec enumPrefixAccessFlagBits2KHR showTableAccessFlagBits2KHR conNameAccessFlagBits2KHR AccessFlagBits2KHR
-
-
-type PipelineStageFlags2KHR = PipelineStageFlagBits2KHR
-
--- | VkPipelineStageFlagBits2KHR - Pipeline stage flags for
--- VkPipelineStageFlags2KHR
---
--- = Description
---
--- Note
---
--- The @TOP@ and @BOTTOM@ pipeline stages are deprecated, and applications
--- should prefer 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR' and
--- 'PIPELINE_STAGE_2_NONE_KHR'.
---
--- Note
---
--- The 'PipelineStageFlags2KHR' bitmask goes beyond the 31 individual bit
--- flags allowable within a C99 enum, which is how
--- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits' is
--- defined. The first 31 values are common to both, and are
--- interchangeable.
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>
-newtype PipelineStageFlagBits2KHR = PipelineStageFlagBits2KHR Flags64
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'PIPELINE_STAGE_2_NONE_KHR' specifies no stages of execution.
-pattern PIPELINE_STAGE_2_NONE_KHR                               = PipelineStageFlagBits2KHR 0x0000000000000000
--- | 'PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR' is equivalent to
--- 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR' with 'AccessFlags2KHR' set to
--- @0@ when specified in the second synchronization scope, but equivalent
--- to 'PIPELINE_STAGE_2_NONE_KHR' in the first scope.
-pattern PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR                    = PipelineStageFlagBits2KHR 0x0000000000000001
--- | 'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR' specifies the stage of the
--- pipeline where indirect command parameters are consumed. This stage also
--- includes reading commands written by
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'.
-pattern PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR                  = PipelineStageFlagBits2KHR 0x0000000000000002
--- | 'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR' is equivalent to the logical OR
--- of:
---
--- -   'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR'
-pattern PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000000004
--- | 'PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR' specifies the vertex shader
--- stage.
-pattern PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR                  = PipelineStageFlagBits2KHR 0x0000000000000008
--- | 'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR' specifies the
--- tessellation control shader stage.
-pattern PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR    = PipelineStageFlagBits2KHR 0x0000000000000010
--- | 'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR' specifies the
--- tessellation evaluation shader stage.
-pattern PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = PipelineStageFlagBits2KHR 0x0000000000000020
--- | 'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR' specifies the geometry shader
--- stage.
-pattern PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR                = PipelineStageFlagBits2KHR 0x0000000000000040
--- | 'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR' specifies the fragment shader
--- stage.
-pattern PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR                = PipelineStageFlagBits2KHR 0x0000000000000080
--- | 'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR' specifies the stage of
--- the pipeline where early fragment tests (depth and stencil tests before
--- fragment shading) are performed. This stage also includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load operations>
--- for framebuffer attachments with a depth\/stencil format.
-pattern PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR           = PipelineStageFlagBits2KHR 0x0000000000000100
--- | 'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR' specifies the stage of
--- the pipeline where late fragment tests (depth and stencil tests after
--- fragment shading) are performed. This stage also includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass store operations>
--- for framebuffer attachments with a depth\/stencil format.
-pattern PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR            = PipelineStageFlagBits2KHR 0x0000000000000200
--- | 'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR' specifies the stage
--- of the pipeline after blending where the final color values are output
--- from the pipeline. This stage also includes
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-load-store-ops subpass load and store operations>
--- and multisample resolve operations for framebuffer attachments with a
--- color or depth\/stencil format.
-pattern PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR        = PipelineStageFlagBits2KHR 0x0000000000000400
--- | 'PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR' specifies the compute shader
--- stage.
-pattern PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR                 = PipelineStageFlagBits2KHR 0x0000000000000800
--- | 'PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR' is equivalent to specifying all
--- of:
---
--- -   'PIPELINE_STAGE_2_COPY_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_BLIT_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_RESOLVE_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_CLEAR_BIT_KHR'
-pattern PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000001000
--- | 'PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR' is equivalent to
--- 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR' with 'AccessFlags2KHR' set to
--- @0@ when specified in the first synchronization scope, but equivalent to
--- 'PIPELINE_STAGE_2_NONE_KHR' in the second scope.
-pattern PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR                 = PipelineStageFlagBits2KHR 0x0000000000002000
--- | 'PIPELINE_STAGE_2_HOST_BIT_KHR' specifies a pseudo-stage indicating
--- execution on the host of reads\/writes of device memory. This stage is
--- not invoked by any commands recorded in a command buffer.
-pattern PIPELINE_STAGE_2_HOST_BIT_KHR                           = PipelineStageFlagBits2KHR 0x0000000000004000
--- | 'PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR' specifies the execution of all
--- graphics pipeline stages, and is equivalent to the logical OR of:
---
--- -   'PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
---
--- -   'PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
---
--- -   'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
---
--- -   'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
---
--- -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
---
--- -   'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
-pattern PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000008000
--- | 'PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR' specifies all operations
--- performed by all commands supported on the queue it is used with.
-pattern PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR                   = PipelineStageFlagBits2KHR 0x0000000000010000
--- | 'PIPELINE_STAGE_2_COPY_BIT_KHR' specifies the execution of all
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#copies copy commands>,
--- including 'Vulkan.Core10.CommandBufferBuilding.cmdCopyQueryPoolResults'.
-pattern PIPELINE_STAGE_2_COPY_BIT_KHR                           = PipelineStageFlagBits2KHR 0x0000000100000000
--- | 'PIPELINE_STAGE_2_RESOLVE_BIT_KHR' specifies the execution of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdResolveImage'.
-pattern PIPELINE_STAGE_2_RESOLVE_BIT_KHR                        = PipelineStageFlagBits2KHR 0x0000000200000000
--- | 'PIPELINE_STAGE_2_BLIT_BIT_KHR' specifies the execution of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdBlitImage'.
-pattern PIPELINE_STAGE_2_BLIT_BIT_KHR                           = PipelineStageFlagBits2KHR 0x0000000400000000
--- | 'PIPELINE_STAGE_2_CLEAR_BIT_KHR' specifies the execution of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#clears clear commands>,
--- with the exception of
--- 'Vulkan.Core10.CommandBufferBuilding.cmdClearAttachments'.
-pattern PIPELINE_STAGE_2_CLEAR_BIT_KHR                          = PipelineStageFlagBits2KHR 0x0000000800000000
--- | 'PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR' specifies the stage of the
--- pipeline where index buffers are consumed.
-pattern PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR                    = PipelineStageFlagBits2KHR 0x0000001000000000
--- | 'PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR' specifies the stage of
--- the pipeline where vertex buffers are consumed.
-pattern PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR         = PipelineStageFlagBits2KHR 0x0000002000000000
--- | 'PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR' is equivalent to
--- specifying all supported
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>:
---
--- -   'PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR'
---
--- -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
---
--- -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
-pattern PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR      = PipelineStageFlagBits2KHR 0x0000004000000000
--- | 'PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI' specifies the stage of the
--- pipeline where the invocation mask image is read by the implementation
--- to optimize the ray dispatch.
-pattern PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI             = PipelineStageFlagBits2KHR 0x0000010000000000
--- | 'PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI' specifies the subpass
--- shading shader stage.
-pattern PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI             = PipelineStageFlagBits2KHR 0x0000008000000000
--- | 'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV' specifies the mesh shader stage.
-pattern PIPELINE_STAGE_2_MESH_SHADER_BIT_NV                     = PipelineStageFlagBits2KHR 0x0000000000100000
--- | 'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV' specifies the task shader stage.
-pattern PIPELINE_STAGE_2_TASK_SHADER_BIT_NV                     = PipelineStageFlagBits2KHR 0x0000000000080000
--- | 'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT' specifies the stage
--- of the pipeline where the fragment density map is read to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymapops generate the fragment areas>.
-pattern PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT       = PipelineStageFlagBits2KHR 0x0000000000800000
--- | 'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR' specifies the execution of
--- the ray tracing shader stages.
-pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR             = PipelineStageFlagBits2KHR 0x0000000000200000
--- | 'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR' specifies the
--- execution of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure acceleration structure commands>.
-pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR   = PipelineStageFlagBits2KHR 0x0000000002000000
--- | 'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR' specifies
--- the stage of the pipeline where the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment fragment shading rate attachment>
--- or
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
--- is read to determine the fragment shading rate for portions of a
--- rasterized primitive.
-pattern PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = PipelineStageFlagBits2KHR 0x0000000000400000
--- | 'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV' specifies the stage of the
--- pipeline where device-side generation of commands via
--- 'Vulkan.Extensions.VK_NV_device_generated_commands.cmdPreprocessGeneratedCommandsNV'
--- is handled.
-pattern PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV              = PipelineStageFlagBits2KHR 0x0000000000020000
--- | 'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT' specifies the stage of
--- the pipeline where the predicate of conditional rendering is consumed.
-pattern PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT          = PipelineStageFlagBits2KHR 0x0000000000040000
--- | 'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT' specifies the stage of the
--- pipeline where vertex attribute output values are written to the
--- transform feedback buffers.
-pattern PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT             = PipelineStageFlagBits2KHR 0x0000000001000000
-
-conNamePipelineStageFlagBits2KHR :: String
-conNamePipelineStageFlagBits2KHR = "PipelineStageFlagBits2KHR"
-
-enumPrefixPipelineStageFlagBits2KHR :: String
-enumPrefixPipelineStageFlagBits2KHR = "PIPELINE_STAGE_2_"
-
-showTablePipelineStageFlagBits2KHR :: [(PipelineStageFlagBits2KHR, String)]
-showTablePipelineStageFlagBits2KHR =
-  [ (PIPELINE_STAGE_2_NONE_KHR                              , "NONE_KHR")
-  , (PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR                   , "TOP_OF_PIPE_BIT_KHR")
-  , (PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR                 , "DRAW_INDIRECT_BIT_KHR")
-  , (PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR                  , "VERTEX_INPUT_BIT_KHR")
-  , (PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR                 , "VERTEX_SHADER_BIT_KHR")
-  , (PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR   , "TESSELLATION_CONTROL_SHADER_BIT_KHR")
-  , (PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, "TESSELLATION_EVALUATION_SHADER_BIT_KHR")
-  , (PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR               , "GEOMETRY_SHADER_BIT_KHR")
-  , (PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR               , "FRAGMENT_SHADER_BIT_KHR")
-  , (PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR          , "EARLY_FRAGMENT_TESTS_BIT_KHR")
-  , (PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR           , "LATE_FRAGMENT_TESTS_BIT_KHR")
-  , (PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR       , "COLOR_ATTACHMENT_OUTPUT_BIT_KHR")
-  , (PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR                , "COMPUTE_SHADER_BIT_KHR")
-  , (PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR                  , "ALL_TRANSFER_BIT_KHR")
-  , (PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR                , "BOTTOM_OF_PIPE_BIT_KHR")
-  , (PIPELINE_STAGE_2_HOST_BIT_KHR                          , "HOST_BIT_KHR")
-  , (PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR                  , "ALL_GRAPHICS_BIT_KHR")
-  , (PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR                  , "ALL_COMMANDS_BIT_KHR")
-  , (PIPELINE_STAGE_2_COPY_BIT_KHR                          , "COPY_BIT_KHR")
-  , (PIPELINE_STAGE_2_RESOLVE_BIT_KHR                       , "RESOLVE_BIT_KHR")
-  , (PIPELINE_STAGE_2_BLIT_BIT_KHR                          , "BLIT_BIT_KHR")
-  , (PIPELINE_STAGE_2_CLEAR_BIT_KHR                         , "CLEAR_BIT_KHR")
-  , (PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR                   , "INDEX_INPUT_BIT_KHR")
-  , (PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR        , "VERTEX_ATTRIBUTE_INPUT_BIT_KHR")
-  , (PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR     , "PRE_RASTERIZATION_SHADERS_BIT_KHR")
-  , (PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI            , "INVOCATION_MASK_BIT_HUAWEI")
-  , (PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI            , "SUBPASS_SHADING_BIT_HUAWEI")
-  , (PIPELINE_STAGE_2_MESH_SHADER_BIT_NV                    , "MESH_SHADER_BIT_NV")
-  , (PIPELINE_STAGE_2_TASK_SHADER_BIT_NV                    , "TASK_SHADER_BIT_NV")
-  , (PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT      , "FRAGMENT_DENSITY_PROCESS_BIT_EXT")
-  , (PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR            , "RAY_TRACING_SHADER_BIT_KHR")
-  , (PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR  , "ACCELERATION_STRUCTURE_BUILD_BIT_KHR")
-  , (PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, "FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR")
-  , (PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV             , "COMMAND_PREPROCESS_BIT_NV")
-  , (PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT         , "CONDITIONAL_RENDERING_BIT_EXT")
-  , (PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT            , "TRANSFORM_FEEDBACK_BIT_EXT")
-  ]
-
-instance Show PipelineStageFlagBits2KHR where
-  showsPrec = enumShowsPrec enumPrefixPipelineStageFlagBits2KHR
-                            showTablePipelineStageFlagBits2KHR
-                            conNamePipelineStageFlagBits2KHR
-                            (\(PipelineStageFlagBits2KHR x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read PipelineStageFlagBits2KHR where
-  readPrec = enumReadPrec enumPrefixPipelineStageFlagBits2KHR
-                          showTablePipelineStageFlagBits2KHR
-                          conNamePipelineStageFlagBits2KHR
-                          PipelineStageFlagBits2KHR
-
-
-type SubmitFlagsKHR = SubmitFlagBitsKHR
-
--- | VkSubmitFlagBitsKHR - Bitmask specifying behavior of a submission
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
--- 'SubmitFlagsKHR'
-newtype SubmitFlagBitsKHR = SubmitFlagBitsKHR Flags
-  deriving newtype (Eq, Ord, Storable, Zero, Bits, FiniteBits)
-
--- | 'SUBMIT_PROTECTED_BIT_KHR' specifies that this batch is a protected
--- submission.
-pattern SUBMIT_PROTECTED_BIT_KHR = SubmitFlagBitsKHR 0x00000001
-
-conNameSubmitFlagBitsKHR :: String
-conNameSubmitFlagBitsKHR = "SubmitFlagBitsKHR"
-
-enumPrefixSubmitFlagBitsKHR :: String
-enumPrefixSubmitFlagBitsKHR = "SUBMIT_PROTECTED_BIT_KHR"
-
-showTableSubmitFlagBitsKHR :: [(SubmitFlagBitsKHR, String)]
-showTableSubmitFlagBitsKHR = [(SUBMIT_PROTECTED_BIT_KHR, "")]
-
-instance Show SubmitFlagBitsKHR where
-  showsPrec = enumShowsPrec enumPrefixSubmitFlagBitsKHR
-                            showTableSubmitFlagBitsKHR
-                            conNameSubmitFlagBitsKHR
-                            (\(SubmitFlagBitsKHR x) -> x)
-                            (\x -> showString "0x" . showHex x)
-
-instance Read SubmitFlagBitsKHR where
-  readPrec =
-    enumReadPrec enumPrefixSubmitFlagBitsKHR showTableSubmitFlagBitsKHR conNameSubmitFlagBitsKHR SubmitFlagBitsKHR
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
+-- [__Contact__]
+--
+--     -   Tobias Hector
+--         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_synchronization2] @tobski%0A<<Here describe the issue or question you have about the VK_KHR_synchronization2 extension>> >
+--
+-- == Other Extension Metadata
+--
+-- [__Last Modified Date__]
+--     2020-12-03
+--
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
+--     -   Interacts with @VK_KHR_create_renderpass2@
+--
+-- [__Contributors__]
+--
+--     -   Tobias Hector
+--
+-- == Description
+--
+-- This extension modifies the original core synchronization APIs to
+-- simplify the interface and improve usability of these APIs. It also adds
+-- new pipeline stage and access flag types that extend into the 64-bit
+-- range, as we have run out within the 32-bit range. The new flags are
+-- identical to the old values within the 32-bit range, with new stages and
+-- bits beyond that.
+--
+-- Pipeline stages and access flags are now specified together in memory
+-- barrier structures, making the connection between the two more obvious.
+-- Additionally, scoping the pipeline stages into the barrier structs
+-- allows the use of the @MEMORY_READ@ and @MEMORY_WRITE@ flags without
+-- sacrificing precision. The per-stage access flags should be used to
+-- disambiguate specific accesses in a given stage or set of stages - for
+-- instance, between uniform reads and sampling operations.
+--
+-- Layout transitions have been simplified as well; rather than requiring a
+-- different set of layouts for depth\/stencil\/color attachments, there
+-- are generic 'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR' and
+-- 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' layouts which are contextually
+-- applied based on the image format. For example, for a depth format
+-- image, 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' is equivalent to
+-- 'Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR'.
+-- 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' also functionally replaces
+-- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'.
+--
+-- Events are now more efficient, because they include memory dependency
+-- information when you set them on the device. Previously, this
+-- information was only known when waiting on an event, so the dependencies
+-- could not be satisfied until the wait occurred. That sometimes meant
+-- stalling the pipeline when the wait occurred. The new API provides
+-- enough information for implementations to satisfy these dependencies in
+-- parallel with other tasks.
+--
+-- Queue submission has been changed to wrap command buffers and semaphores
+-- in extensible structures, which incorporate changes from Vulkan 1.1,
+-- @VK_KHR_device_group@, and @VK_KHR_timeline_semaphore@. This also adds a
+-- pipeline stage to the semaphore signal operation, mirroring the existing
+-- pipeline stage specification for wait operations.
+--
+-- Other miscellaneous changes include:
+--
+-- -   Events can now be specified as interacting only with the device,
+--     allowing more efficient access to the underlying object.
+--
+-- -   Image memory barriers that do not perform an image layout transition
+--     can be specified by setting @oldLayout@ equal to @newLayout@.
+--
+--     -   E.g. the old and new layout can both be set to
+--         'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_UNDEFINED',
+--         without discarding data in the image.
+--
+-- -   Queue family ownership transfer parameters are simplified in some
+--     cases.
+--
+-- -   Where two synchronization commands need to be matched up (queue
+--     transfer operations, events), the dependency information specified
+--     in each place must now match completely for consistency.
+--
+-- -   Extensions with commands or functions with a
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlags' or
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits'
+--     parameter have had those APIs replaced with equivalents using
+--     'PipelineStageFlags2KHR'.
+--
+-- -   The new event and barrier interfaces are now more extensible for
+--     future changes.
+--
+-- -   Relevant pipeline stage masks can now be specified as empty with the
+--     new 'PIPELINE_STAGE_NONE_KHR' and
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_NONE_KHR'
+--     values.
+--
+-- -   'MemoryBarrier2KHR' can be chained to
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',
+--     overriding the original 32-bit stage and access masks.
+--
+-- == New Base Types
+--
+-- -   'Vulkan.Core10.FundamentalTypes.Flags64'
+--
+-- == New Commands
+--
+-- -   'cmdPipelineBarrier2KHR'
+--
+-- -   'cmdResetEvent2KHR'
+--
+-- -   'cmdSetEvent2KHR'
+--
+-- -   'cmdWaitEvents2KHR'
+--
+-- -   'cmdWriteTimestamp2KHR'
+--
+-- -   'queueSubmit2KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>
+-- is supported:
+--
+-- -   'cmdWriteBufferMarker2AMD'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>
+-- is supported:
+--
+-- -   'getQueueCheckpointData2NV'
+--
+-- == New Structures
+--
+-- -   'BufferMemoryBarrier2KHR'
+--
+-- -   'CommandBufferSubmitInfoKHR'
+--
+-- -   'DependencyInfoKHR'
+--
+-- -   'ImageMemoryBarrier2KHR'
+--
+-- -   'SemaphoreSubmitInfoKHR'
+--
+-- -   'SubmitInfo2KHR'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
+--     'Vulkan.Core10.Device.DeviceCreateInfo':
+--
+--     -   'PhysicalDeviceSynchronization2FeaturesKHR'
+--
+-- -   Extending
+--     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2':
+--
+--     -   'MemoryBarrier2KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>
+-- is supported:
+--
+-- -   'CheckpointData2NV'
+--
+-- -   Extending
+--     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2':
+--
+--     -   'QueueFamilyCheckpointProperties2NV'
+--
+-- == New Enums
+--
+-- -   'AccessFlagBits2KHR'
+--
+-- -   'PipelineStageFlagBits2KHR'
+--
+-- -   'SubmitFlagBitsKHR'
+--
+-- == New Bitmasks
+--
+-- -   'AccessFlags2KHR'
+--
+-- -   'PipelineStageFlags2KHR'
+--
+-- -   'SubmitFlagsKHR'
+--
+-- == New Enum Constants
+--
+-- -   'KHR_SYNCHRONIZATION_2_EXTENSION_NAME'
+--
+-- -   'KHR_SYNCHRONIZATION_2_SPEC_VERSION'
+--
+-- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
+--
+--     -   'ACCESS_NONE_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.EventCreateFlagBits.EventCreateFlagBits':
+--
+--     -   'EVENT_CREATE_DEVICE_ONLY_BIT_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
+--
+--     -   'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
+--
+--     -   'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
+--
+--     -   'PIPELINE_STAGE_NONE_KHR'
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_DEPENDENCY_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR'
+--
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR'
+--
+--     -   'STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR'
+--
+--     -   'STRUCTURE_TYPE_SUBMIT_INFO_2_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced VK_EXT_blend_operation_advanced>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV'
+--
+--     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV'
+--
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>
+-- is supported:
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- If
+-- <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.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV'
+--
+--     -   'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV'
+--
+--     -   'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV'
+--
+-- If
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>
+-- is supported:
+--
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
+--
+--     -   'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV'
+--
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
+--
+--     -   'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
+-- == Examples
+--
+-- See
+-- <https://github.com/KhronosGroup/Vulkan-Docs/wiki/Synchronization-Examples>
+--
+-- == Version History
+--
+-- -   Revision 1, 2020-12-03 (Tobias Hector)
+--
+--     -   Internal revisions
+--
+-- == See Also
+--
+-- 'AccessFlagBits2KHR', 'AccessFlags2KHR', 'BufferMemoryBarrier2KHR',
+-- 'CommandBufferSubmitInfoKHR', 'DependencyInfoKHR',
+-- 'Vulkan.Core10.FundamentalTypes.Flags64', 'ImageMemoryBarrier2KHR',
+-- 'MemoryBarrier2KHR', 'PhysicalDeviceSynchronization2FeaturesKHR',
+-- 'PipelineStageFlagBits2KHR', 'PipelineStageFlags2KHR',
+-- 'SemaphoreSubmitInfoKHR', 'SubmitFlagBitsKHR', 'SubmitFlagsKHR',
+-- 'SubmitInfo2KHR', 'cmdPipelineBarrier2KHR', 'cmdResetEvent2KHR',
+-- 'cmdSetEvent2KHR', 'cmdWaitEvents2KHR', 'cmdWriteTimestamp2KHR',
+-- 'queueSubmit2KHR'
+--
+-- == Document Notes
+--
+-- For more information, see the
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_synchronization2 Vulkan Specification>
+--
+-- This page is a generated document. Fixes and changes should be made to
+-- the generator scripts, not directly.
+module Vulkan.Extensions.VK_KHR_synchronization2  ( cmdWriteBufferMarker2AMD
+                                                  , getQueueCheckpointData2NV
+                                                  , pattern STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR
+                                                  , pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR
+                                                  , pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR
+                                                  , pattern STRUCTURE_TYPE_DEPENDENCY_INFO_KHR
+                                                  , pattern STRUCTURE_TYPE_SUBMIT_INFO_2_KHR
+                                                  , pattern STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR
+                                                  , pattern STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR
+                                                  , pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR
+                                                  , pattern EVENT_CREATE_DEVICE_ONLY_BIT_KHR
+                                                  , pattern IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
+                                                  , pattern IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
+                                                  , pattern PIPELINE_STAGE_NONE_KHR
+                                                  , pattern ACCESS_NONE_KHR
+                                                  , pattern PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
+                                                  , pattern ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
+                                                  , pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV
+                                                  , pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV
+                                                  , pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV
+                                                  , pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV
+                                                  , cmdSetEvent2KHR
+                                                  , cmdResetEvent2KHR
+                                                  , cmdWaitEvents2KHR
+                                                  , cmdPipelineBarrier2KHR
+                                                  , queueSubmit2KHR
+                                                  , cmdWriteTimestamp2KHR
+                                                  , QueueFamilyCheckpointProperties2NV(..)
+                                                  , CheckpointData2NV(..)
+                                                  , AccessFlags2KHR
+                                                  , PipelineStageFlags2KHR
+                                                  , SubmitFlagsKHR
+                                                  , AccessFlagBits2KHR
+                                                  , PipelineStageFlagBits2KHR
+                                                  , SubmitFlagBitsKHR
+                                                  , MemoryBarrier2KHR
+                                                  , ImageMemoryBarrier2KHR
+                                                  , BufferMemoryBarrier2KHR
+                                                  , DependencyInfoKHR
+                                                  , SemaphoreSubmitInfoKHR
+                                                  , CommandBufferSubmitInfoKHR
+                                                  , SubmitInfo2KHR
+                                                  , PhysicalDeviceSynchronization2FeaturesKHR
+                                                  , KHR_SYNCHRONIZATION_2_SPEC_VERSION
+                                                  , pattern KHR_SYNCHRONIZATION_2_SPEC_VERSION
+                                                  , KHR_SYNCHRONIZATION_2_EXTENSION_NAME
+                                                  , pattern KHR_SYNCHRONIZATION_2_EXTENSION_NAME
+                                                  ) where
+
+import Vulkan.Internal.Utils (traceAroundEvent)
+import Control.Exception.Base (bracket)
+import Control.Monad (unless)
+import Control.Monad.IO.Class (liftIO)
+import Foreign.Marshal.Alloc (allocaBytes)
+import Foreign.Marshal.Alloc (callocBytes)
+import Foreign.Marshal.Alloc (free)
+import GHC.IO (throwIO)
+import GHC.Ptr (nullFunPtr)
+import Foreign.Ptr (nullPtr)
+import Foreign.Ptr (plusPtr)
+import Control.Monad.Trans.Class (lift)
+import Control.Monad.Trans.Cont (evalContT)
+import Data.Vector (generateM)
+import Vulkan.CStruct (FromCStruct)
+import Vulkan.CStruct (FromCStruct(..))
+import Vulkan.CStruct (ToCStruct)
+import Vulkan.CStruct (ToCStruct(..))
+import Vulkan.Zero (Zero(..))
+import Control.Monad.IO.Class (MonadIO)
+import Data.String (IsString)
+import Data.Typeable (Typeable)
+import Foreign.Storable (Storable)
+import Foreign.Storable (Storable(peek))
+import Foreign.Storable (Storable(poke))
+import qualified Foreign.Storable (Storable(..))
+import GHC.Generics (Generic)
+import GHC.IO.Exception (IOErrorType(..))
+import GHC.IO.Exception (IOException(..))
+import Foreign.Ptr (FunPtr)
+import Foreign.Ptr (Ptr)
+import Data.Word (Word32)
+import Data.Kind (Type)
+import Control.Monad.Trans.Cont (ContT(..))
+import Data.Vector (Vector)
+import Vulkan.CStruct.Utils (advancePtrBytes)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (cmdPipelineBarrier2)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (cmdResetEvent2)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (cmdSetEvent2)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (cmdWaitEvents2)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (cmdWriteTimestamp2)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (queueSubmit2)
+import Vulkan.NamedType ((:::))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core10.Handles (Buffer)
+import Vulkan.Core10.Handles (Buffer(..))
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (BufferMemoryBarrier2)
+import Vulkan.Core10.Handles (CommandBuffer)
+import Vulkan.Core10.Handles (CommandBuffer(..))
+import Vulkan.Core10.Handles (CommandBuffer(CommandBuffer))
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (CommandBufferSubmitInfo)
+import Vulkan.Core10.Handles (CommandBuffer_T)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (DependencyInfo)
+import Vulkan.Dynamic (DeviceCmds(pVkCmdWriteBufferMarker2AMD))
+import Vulkan.Dynamic (DeviceCmds(pVkGetQueueCheckpointData2NV))
+import Vulkan.Core10.FundamentalTypes (DeviceSize)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (ImageMemoryBarrier2)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (MemoryBarrier2)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (PhysicalDeviceSynchronization2Features)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(..))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core10.Handles (Queue)
+import Vulkan.Core10.Handles (Queue(..))
+import Vulkan.Core10.Handles (Queue(Queue))
+import Vulkan.Core10.Handles (Queue_T)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (SemaphoreSubmitInfo)
+import Vulkan.Core10.Enums.StructureType (StructureType)
+import Vulkan.Core13.Enums.SubmitFlagBits (SubmitFlagBits)
+import Vulkan.Core13.Enums.SubmitFlagBits (SubmitFlags)
+import Vulkan.Core13.Promoted_From_VK_KHR_synchronization2 (SubmitInfo2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR))
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlags2)
+import Vulkan.Core13.Enums.AccessFlags2 (AccessFlagBits2(ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR))
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlags)
+import Vulkan.Core10.Enums.AccessFlagBits (AccessFlagBits(ACCESS_NONE))
+import Vulkan.Core10.Enums.EventCreateFlagBits (EventCreateFlags)
+import Vulkan.Core10.Enums.EventCreateFlagBits (EventCreateFlagBits(EVENT_CREATE_DEVICE_ONLY_BIT))
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_ATTACHMENT_OPTIMAL))
+import Vulkan.Core10.Enums.ImageLayout (ImageLayout(IMAGE_LAYOUT_READ_ONLY_OPTIMAL))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR))
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlags2)
+import Vulkan.Core13.Enums.PipelineStageFlags2 (PipelineStageFlagBits2(PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR))
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlags)
+import Vulkan.Core10.Enums.PipelineStageFlagBits (PipelineStageFlagBits(PIPELINE_STAGE_NONE))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_DEPENDENCY_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_MEMORY_BARRIER_2))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO))
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_SUBMIT_INFO_2))
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkCmdWriteBufferMarker2AMD
+  :: FunPtr (Ptr CommandBuffer_T -> PipelineStageFlags2 -> Buffer -> DeviceSize -> Word32 -> IO ()) -> Ptr CommandBuffer_T -> PipelineStageFlags2 -> Buffer -> DeviceSize -> Word32 -> IO ()
+
+-- | vkCmdWriteBufferMarker2AMD - Execute a pipelined write of a marker value
+-- into a buffer
+--
+-- = Description
+--
+-- The command will write the 32-bit marker value into the buffer only
+-- after all preceding commands have finished executing up to at least the
+-- specified pipeline stage. This includes the completion of other
+-- preceding 'cmdWriteBufferMarker2AMD' commands so long as their specified
+-- pipeline stages occur either at the same time or earlier than this
+-- command’s specified @stage@.
+--
+-- While consecutive buffer marker writes with the same @stage@ parameter
+-- implicitly complete in submission order, memory and execution
+-- dependencies between buffer marker writes and other operations /must/
+-- still be explicitly ordered using synchronization commands. The access
+-- scope for buffer marker writes falls under the
+-- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_TRANSFER_WRITE_BIT', and the
+-- pipeline stages for identifying the synchronization scope /must/ include
+-- both @stage@ and
+-- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_TRANSFER_BIT'.
+--
+-- Note
+--
+-- Similar to
+-- 'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.cmdWriteTimestamp2',
+-- if an implementation is unable to write a marker at any specific
+-- pipeline stage, it /may/ instead do so at any logically later stage.
+--
+-- Note
+--
+-- Implementations /may/ only support a limited number of pipelined marker
+-- write operations in flight at a given time. Thus an excessive number of
+-- marker write operations /may/ degrade command execution performance.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03929# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-geometryShader geometry shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03930# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-tessellationShader tessellation shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT'
+--     or
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03931# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-conditionalRendering conditional rendering>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03932# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMap fragment density map>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03933# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-transformFeedback transform feedback>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03934# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-meshShader mesh shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03935# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-taskShader task shaders>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-04956# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-04957# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-subpassShading subpass shading>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-04995# If the
+--     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-invocationMask invocation mask image>
+--     feature is not enabled, @stage@ /must/ not contain
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI'
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-synchronization2-03893# The
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-synchronization2 synchronization2>
+--     feature /must/ be enabled
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03894# @stage@ /must/ include
+--     only a single pipeline stage
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-03895# @stage@ /must/ include
+--     only stages that are valid for the queue family that was used to
+--     create the command pool that @commandBuffer@ was allocated from
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03896# @dstOffset@ /must/
+--     be less than or equal to the size of @dstBuffer@ minus @4@
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03897# @dstBuffer@ /must/
+--     have been created with the
+--     'Vulkan.Core10.Enums.BufferUsageFlagBits.BUFFER_USAGE_TRANSFER_DST_BIT'
+--     usage flag
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03898# If @dstBuffer@ is
+--     non-sparse then it /must/ be bound completely and contiguously to a
+--     single 'Vulkan.Core10.Handles.DeviceMemory' object
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03899# @dstOffset@ /must/
+--     be a multiple of @4@
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter#
+--     @commandBuffer@ /must/ be a valid
+--     'Vulkan.Core10.Handles.CommandBuffer' handle
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-stage-parameter# @stage@ /must/ be
+--     a valid combination of
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2'
+--     values
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-parameter# @dstBuffer@
+--     /must/ be a valid 'Vulkan.Core10.Handles.Buffer' handle
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-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-vkCmdWriteBufferMarker2AMD-commandBuffer-cmdpool# The
+--     'Vulkan.Core10.Handles.CommandPool' that @commandBuffer@ was
+--     allocated from /must/ support transfer, graphics, or compute
+--     operations
+--
+-- -   #VUID-vkCmdWriteBufferMarker2AMD-commonparent# Both of
+--     @commandBuffer@, and @dstBuffer@ /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#VkQueueFlagBits Supported Queue Types> |
+-- +============================================================================================================================+========================================================================================================================+=======================================================================================================================+
+-- | Primary                                                                                                                    | Both                                                                                                                   | Transfer                                                                                                              |
+-- | Secondary                                                                                                                  |                                                                                                                        | Graphics                                                                                                              |
+-- |                                                                                                                            |                                                                                                                        | Compute                                                                                                               |
+-- +----------------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------+
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_AMD_buffer_marker VK_AMD_buffer_marker>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- 'Vulkan.Core10.Handles.Buffer', 'Vulkan.Core10.Handles.CommandBuffer',
+-- 'Vulkan.Core10.FundamentalTypes.DeviceSize',
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2'
+cmdWriteBufferMarker2AMD :: forall io
+                          . (MonadIO io)
+                         => -- | @commandBuffer@ is the command buffer into which the command will be
+                            -- recorded.
+                            CommandBuffer
+                         -> -- | @stage@ specifies the pipeline stage whose completion triggers the
+                            -- marker write.
+                            PipelineStageFlags2
+                         -> -- | @dstBuffer@ is the buffer where the marker will be written.
+                            ("dstBuffer" ::: Buffer)
+                         -> -- | @dstOffset@ is the byte offset into the buffer where the marker will be
+                            -- written.
+                            ("dstOffset" ::: DeviceSize)
+                         -> -- | @marker@ is the 32-bit value of the marker.
+                            ("marker" ::: Word32)
+                         -> io ()
+cmdWriteBufferMarker2AMD commandBuffer stage dstBuffer dstOffset marker = liftIO $ do
+  let vkCmdWriteBufferMarker2AMDPtr = pVkCmdWriteBufferMarker2AMD (case commandBuffer of CommandBuffer{deviceCmds} -> deviceCmds)
+  unless (vkCmdWriteBufferMarker2AMDPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkCmdWriteBufferMarker2AMD is null" Nothing Nothing
+  let vkCmdWriteBufferMarker2AMD' = mkVkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMDPtr
+  traceAroundEvent "vkCmdWriteBufferMarker2AMD" (vkCmdWriteBufferMarker2AMD' (commandBufferHandle (commandBuffer)) (stage) (dstBuffer) (dstOffset) (marker))
+  pure $ ()
+
+
+foreign import ccall
+#if !defined(SAFE_FOREIGN_CALLS)
+  unsafe
+#endif
+  "dynamic" mkVkGetQueueCheckpointData2NV
+  :: FunPtr (Ptr Queue_T -> Ptr Word32 -> Ptr CheckpointData2NV -> IO ()) -> Ptr Queue_T -> Ptr Word32 -> Ptr CheckpointData2NV -> IO ()
+
+-- | vkGetQueueCheckpointData2NV - Retrieve diagnostic checkpoint data
+--
+-- = Description
+--
+-- If @pCheckpointData@ is @NULL@, then the number of checkpoint markers
+-- available is returned in @pCheckpointDataCount@. Otherwise,
+-- @pCheckpointDataCount@ /must/ point to a variable set by the user to the
+-- number of elements in the @pCheckpointData@ array, and on return the
+-- variable is overwritten with the number of structures actually written
+-- to @pCheckpointData@.
+--
+-- If @pCheckpointDataCount@ is less than the number of checkpoint markers
+-- available, at most @pCheckpointDataCount@ structures will be written.
+--
+-- == Valid Usage
+--
+-- -   #VUID-vkGetQueueCheckpointData2NV-queue-03892# The device that
+--     @queue@ belongs to /must/ be in the lost state
+--
+-- == Valid Usage (Implicit)
+--
+-- -   #VUID-vkGetQueueCheckpointData2NV-queue-parameter# @queue@ /must/ be
+--     a valid 'Vulkan.Core10.Handles.Queue' handle
+--
+-- -   #VUID-vkGetQueueCheckpointData2NV-pCheckpointDataCount-parameter#
+--     @pCheckpointDataCount@ /must/ be a valid pointer to a @uint32_t@
+--     value
+--
+-- -   #VUID-vkGetQueueCheckpointData2NV-pCheckpointData-parameter# If the
+--     value referenced by @pCheckpointDataCount@ is not @0@, and
+--     @pCheckpointData@ is not @NULL@, @pCheckpointData@ /must/ be a valid
+--     pointer to an array of @pCheckpointDataCount@ 'CheckpointData2NV'
+--     structures
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
+-- 'CheckpointData2NV', 'Vulkan.Core10.Handles.Queue'
+getQueueCheckpointData2NV :: forall io
+                           . (MonadIO io)
+                          => -- | @queue@ is the 'Vulkan.Core10.Handles.Queue' object the caller would
+                             -- like to retrieve checkpoint data for
+                             Queue
+                          -> io (("checkpointData" ::: Vector CheckpointData2NV))
+getQueueCheckpointData2NV queue = liftIO . evalContT $ do
+  let vkGetQueueCheckpointData2NVPtr = pVkGetQueueCheckpointData2NV (case queue of Queue{deviceCmds} -> deviceCmds)
+  lift $ unless (vkGetQueueCheckpointData2NVPtr /= nullFunPtr) $
+    throwIO $ IOError Nothing InvalidArgument "" "The function pointer for vkGetQueueCheckpointData2NV is null" Nothing Nothing
+  let vkGetQueueCheckpointData2NV' = mkVkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NVPtr
+  let queue' = queueHandle (queue)
+  pPCheckpointDataCount <- ContT $ bracket (callocBytes @Word32 4) free
+  lift $ traceAroundEvent "vkGetQueueCheckpointData2NV" (vkGetQueueCheckpointData2NV' queue' (pPCheckpointDataCount) (nullPtr))
+  pCheckpointDataCount <- lift $ peek @Word32 pPCheckpointDataCount
+  pPCheckpointData <- ContT $ bracket (callocBytes @CheckpointData2NV ((fromIntegral (pCheckpointDataCount)) * 32)) free
+  _ <- traverse (\i -> ContT $ pokeZeroCStruct (pPCheckpointData `advancePtrBytes` (i * 32) :: Ptr CheckpointData2NV) . ($ ())) [0..(fromIntegral (pCheckpointDataCount)) - 1]
+  lift $ traceAroundEvent "vkGetQueueCheckpointData2NV" (vkGetQueueCheckpointData2NV' queue' (pPCheckpointDataCount) ((pPCheckpointData)))
+  pCheckpointDataCount' <- lift $ peek @Word32 pPCheckpointDataCount
+  pCheckpointData' <- lift $ generateM (fromIntegral (pCheckpointDataCount')) (\i -> peekCStruct @CheckpointData2NV (((pPCheckpointData) `advancePtrBytes` (32 * (i)) :: Ptr CheckpointData2NV)))
+  pure $ (pCheckpointData')
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR"
+pattern STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = STRUCTURE_TYPE_MEMORY_BARRIER_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR"
+pattern STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR"
+pattern STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR"
+pattern STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = STRUCTURE_TYPE_DEPENDENCY_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR"
+pattern STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = STRUCTURE_TYPE_SUBMIT_INFO_2
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR"
+pattern STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR"
+pattern STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO
+
+
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES
+
+
+-- No documentation found for TopLevel "VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR"
+pattern EVENT_CREATE_DEVICE_ONLY_BIT_KHR = EVENT_CREATE_DEVICE_ONLY_BIT
+
+
+-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR"
+pattern IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = IMAGE_LAYOUT_READ_ONLY_OPTIMAL
+
+
+-- No documentation found for TopLevel "VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR"
+pattern IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_NONE_KHR"
+pattern PIPELINE_STAGE_NONE_KHR = PIPELINE_STAGE_NONE
+
+
+-- No documentation found for TopLevel "VK_ACCESS_NONE_KHR"
+pattern ACCESS_NONE_KHR = ACCESS_NONE
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV"
+pattern PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV"
+pattern ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV"
+pattern PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV"
+pattern PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV"
+pattern ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
+
+
+-- No documentation found for TopLevel "VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV"
+pattern ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
+
+
+-- No documentation found for TopLevel "vkCmdSetEvent2KHR"
+cmdSetEvent2KHR = cmdSetEvent2
+
+
+-- No documentation found for TopLevel "vkCmdResetEvent2KHR"
+cmdResetEvent2KHR = cmdResetEvent2
+
+
+-- No documentation found for TopLevel "vkCmdWaitEvents2KHR"
+cmdWaitEvents2KHR = cmdWaitEvents2
+
+
+-- No documentation found for TopLevel "vkCmdPipelineBarrier2KHR"
+cmdPipelineBarrier2KHR = cmdPipelineBarrier2
+
+
+-- No documentation found for TopLevel "vkQueueSubmit2KHR"
+queueSubmit2KHR = queueSubmit2
+
+
+-- No documentation found for TopLevel "vkCmdWriteTimestamp2KHR"
+cmdWriteTimestamp2KHR = cmdWriteTimestamp2
+
+
+-- | VkQueueFamilyCheckpointProperties2NV - Return structure for queue family
+-- checkpoint information query
+--
+-- = Description
+--
+-- Additional queue family information can be queried by setting
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.QueueFamilyProperties2'::@pNext@
+-- to point to a 'QueueFamilyCheckpointProperties2NV' structure.
+--
+-- == Valid Usage (Implicit)
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType'
+data QueueFamilyCheckpointProperties2NV = QueueFamilyCheckpointProperties2NV
+  { -- | @checkpointExecutionStageMask@ is a mask indicating which pipeline
+    -- stages the implementation can execute checkpoint markers in.
+    checkpointExecutionStageMask :: PipelineStageFlags2 }
+  deriving (Typeable, Eq)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (QueueFamilyCheckpointProperties2NV)
+#endif
+deriving instance Show QueueFamilyCheckpointProperties2NV
+
+instance ToCStruct QueueFamilyCheckpointProperties2NV where
+  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p QueueFamilyCheckpointProperties2NV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2)) (checkpointExecutionStageMask)
+    f
+  cStructSize = 24
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2)) (zero)
+    f
+
+instance FromCStruct QueueFamilyCheckpointProperties2NV where
+  peekCStruct p = do
+    checkpointExecutionStageMask <- peek @PipelineStageFlags2 ((p `plusPtr` 16 :: Ptr PipelineStageFlags2))
+    pure $ QueueFamilyCheckpointProperties2NV
+             checkpointExecutionStageMask
+
+instance Storable QueueFamilyCheckpointProperties2NV where
+  sizeOf ~_ = 24
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero QueueFamilyCheckpointProperties2NV where
+  zero = QueueFamilyCheckpointProperties2NV
+           zero
+
+
+-- | VkCheckpointData2NV - Return structure for command buffer checkpoint
+-- data
+--
+-- == Valid Usage (Implicit)
+--
+-- The stages at which a checkpoint marker /can/ be executed are
+-- implementation-defined and /can/ be queried by calling
+-- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceQueueFamilyProperties2'.
+--
+-- = See Also
+--
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 VK_KHR_synchronization2>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>,
+-- 'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlags2',
+-- 'Vulkan.Core10.Enums.StructureType.StructureType',
+-- 'getQueueCheckpointData2NV'
+data CheckpointData2NV = CheckpointData2NV
+  { -- | @stage@ indicates a single pipeline stage which the checkpoint marker
+    -- data refers to.
+    stage :: PipelineStageFlags2
+  , -- | @pCheckpointMarker@ contains the value of the last checkpoint marker
+    -- executed in the stage that @stage@ refers to.
+    checkpointMarker :: Ptr ()
+  }
+  deriving (Typeable)
+#if defined(GENERIC_INSTANCES)
+deriving instance Generic (CheckpointData2NV)
+#endif
+deriving instance Show CheckpointData2NV
+
+instance ToCStruct CheckpointData2NV where
+  withCStruct x f = allocaBytes 32 $ \p -> pokeCStruct p x (f p)
+  pokeCStruct p CheckpointData2NV{..} f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2)) (stage)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (checkpointMarker)
+    f
+  cStructSize = 32
+  cStructAlignment = 8
+  pokeZeroCStruct p f = do
+    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV)
+    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
+    poke ((p `plusPtr` 16 :: Ptr PipelineStageFlags2)) (zero)
+    poke ((p `plusPtr` 24 :: Ptr (Ptr ()))) (zero)
+    f
+
+instance FromCStruct CheckpointData2NV where
+  peekCStruct p = do
+    stage <- peek @PipelineStageFlags2 ((p `plusPtr` 16 :: Ptr PipelineStageFlags2))
+    pCheckpointMarker <- peek @(Ptr ()) ((p `plusPtr` 24 :: Ptr (Ptr ())))
+    pure $ CheckpointData2NV
+             stage pCheckpointMarker
+
+instance Storable CheckpointData2NV where
+  sizeOf ~_ = 32
+  alignment ~_ = 8
+  peek = peekCStruct
+  poke ptr poked = pokeCStruct ptr poked (pure ())
+
+instance Zero CheckpointData2NV where
+  zero = CheckpointData2NV
+           zero
+           zero
+
+
+-- No documentation found for TopLevel "VkAccessFlags2KHR"
+type AccessFlags2KHR = AccessFlags2
+
+
+-- No documentation found for TopLevel "VkPipelineStageFlags2KHR"
+type PipelineStageFlags2KHR = PipelineStageFlags2
+
+
+-- No documentation found for TopLevel "VkSubmitFlagsKHR"
+type SubmitFlagsKHR = SubmitFlags
+
+
+-- No documentation found for TopLevel "VkAccessFlagBits2KHR"
+type AccessFlagBits2KHR = AccessFlagBits2
+
+
+-- No documentation found for TopLevel "VkPipelineStageFlagBits2KHR"
+type PipelineStageFlagBits2KHR = PipelineStageFlagBits2
+
+
+-- No documentation found for TopLevel "VkSubmitFlagBitsKHR"
+type SubmitFlagBitsKHR = SubmitFlagBits
+
+
+-- No documentation found for TopLevel "VkMemoryBarrier2KHR"
+type MemoryBarrier2KHR = MemoryBarrier2
+
+
+-- No documentation found for TopLevel "VkImageMemoryBarrier2KHR"
+type ImageMemoryBarrier2KHR = ImageMemoryBarrier2
+
+
+-- No documentation found for TopLevel "VkBufferMemoryBarrier2KHR"
+type BufferMemoryBarrier2KHR = BufferMemoryBarrier2
+
+
+-- No documentation found for TopLevel "VkDependencyInfoKHR"
+type DependencyInfoKHR = DependencyInfo
+
+
+-- No documentation found for TopLevel "VkSemaphoreSubmitInfoKHR"
+type SemaphoreSubmitInfoKHR = SemaphoreSubmitInfo
+
+
+-- No documentation found for TopLevel "VkCommandBufferSubmitInfoKHR"
+type CommandBufferSubmitInfoKHR = CommandBufferSubmitInfo
+
+
+-- No documentation found for TopLevel "VkSubmitInfo2KHR"
+type SubmitInfo2KHR = SubmitInfo2
+
+
+-- No documentation found for TopLevel "VkPhysicalDeviceSynchronization2FeaturesKHR"
+type PhysicalDeviceSynchronization2FeaturesKHR = PhysicalDeviceSynchronization2Features
 
 
 type KHR_SYNCHRONIZATION_2_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_synchronization2.hs-boot
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Tobias Hector
@@ -35,6 +40,8 @@
 --
 -- [__Interactions and External Dependencies__]
 --
+--     -   Promoted to Vulkan 1.3 Core
+--
 --     -   Interacts with @VK_KHR_create_renderpass2@
 --
 -- [__Contributors__]
@@ -60,16 +67,12 @@
 --
 -- Layout transitions have been simplified as well; rather than requiring a
 -- different set of layouts for depth\/stencil\/color attachments, there
--- are generic
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
--- and 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
--- layouts which are contextually applied based on the image format. For
--- example, for a depth format image,
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' is
--- equivalent to
+-- are generic 'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR' and
+-- 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' layouts which are contextually
+-- applied based on the image format. For example, for a depth format
+-- image, 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' is equivalent to
 -- 'Vulkan.Extensions.VK_KHR_separate_depth_stencil_layouts.IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR'.
--- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
--- also functionally replaces
+-- 'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR' also functionally replaces
 -- 'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL'.
 --
 -- Events are now more efficient, because they include memory dependency
@@ -115,9 +118,9 @@
 --     future changes.
 --
 -- -   Relevant pipeline stage masks can now be specified as empty with the
---     new
---     'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_NONE_KHR'
---     and 'PIPELINE_STAGE_2_NONE_KHR' values.
+--     new 'PIPELINE_STAGE_NONE_KHR' and
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_NONE_KHR'
+--     values.
 --
 -- -   'MemoryBarrier2KHR' can be chained to
 --     'Vulkan.Core12.Promoted_From_VK_KHR_create_renderpass2.SubpassDependency2',
@@ -213,123 +216,129 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.AccessFlagBits.AccessFlagBits':
 --
---     -   'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_NONE_KHR'
+--     -   'ACCESS_NONE_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.EventCreateFlagBits.EventCreateFlagBits':
 --
---     -   'Vulkan.Core10.Enums.EventCreateFlagBits.EVENT_CREATE_DEVICE_ONLY_BIT_KHR'
+--     -   'EVENT_CREATE_DEVICE_ONLY_BIT_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.ImageLayout.ImageLayout':
 --
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
+--     -   'IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR'
 --
---     -   'Vulkan.Core10.Enums.ImageLayout.IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
+--     -   'IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR'
 --
 -- -   Extending
 --     'Vulkan.Core10.Enums.PipelineStageFlagBits.PipelineStageFlagBits':
 --
---     -   'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_NONE_KHR'
+--     -   'PIPELINE_STAGE_NONE_KHR'
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR'
+--     -   'STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR'
+--     -   'STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_DEPENDENCY_INFO_KHR'
+--     -   'STRUCTURE_TYPE_DEPENDENCY_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR'
+--     -   'STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR'
+--     -   'STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR'
+--     -   'STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR'
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_SUBMIT_INFO_2_KHR'
+--     -   'STRUCTURE_TYPE_SUBMIT_INFO_2_KHR'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_blend_operation_advanced VK_EXT_blend_operation_advanced>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_conditional_rendering VK_EXT_conditional_rendering>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_fragment_density_map VK_EXT_fragment_density_map>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_EXT_transform_feedback VK_EXT_transform_feedback>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT'
 --
---     -   'ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT'
 --
---     -   'ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_acceleration_structure VK_KHR_acceleration_structure>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR'
 --
---     -   'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_fragment_shading_rate VK_KHR_fragment_shading_rate>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_ray_tracing_pipeline VK_KHR_ray_tracing_pipeline>
 -- is supported:
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints VK_NV_device_diagnostic_checkpoints>
@@ -345,37 +354,40 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands VK_NV_device_generated_commands>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
---     -   'ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV'
 --
---     -   'ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'
+--     -   'Vulkan.Core13.Enums.AccessFlags2.ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader VK_NV_mesh_shader>
 -- is supported:
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
---     -   'PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_MESH_SHADER_BIT_NV'
 --
---     -   'PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
+--     -   'Vulkan.Core13.Enums.PipelineStageFlags2.PIPELINE_STAGE_2_TASK_SHADER_BIT_NV'
 --
 -- If
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing VK_NV_ray_tracing>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
 --     -   'ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV'
 --
 --     -   'ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
 --     -   'PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV'
 --
@@ -385,14 +397,21 @@
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image VK_NV_shading_rate_image>
 -- is supported:
 --
--- -   Extending 'AccessFlagBits2KHR':
+-- -   Extending 'Vulkan.Core13.Enums.AccessFlags2.AccessFlagBits2':
 --
 --     -   'ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV'
 --
--- -   Extending 'PipelineStageFlagBits2KHR':
+-- -   Extending
+--     'Vulkan.Core13.Enums.PipelineStageFlags2.PipelineStageFlagBits2':
 --
 --     -   'PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Examples
 --
 -- See
@@ -419,39 +438,18 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_synchronization2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_synchronization2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_synchronization2  ( BufferMemoryBarrier2KHR
-                                                  , CheckpointData2NV
-                                                  , CommandBufferSubmitInfoKHR
-                                                  , DependencyInfoKHR
-                                                  , ImageMemoryBarrier2KHR
-                                                  , MemoryBarrier2KHR
-                                                  , PhysicalDeviceSynchronization2FeaturesKHR
+module Vulkan.Extensions.VK_KHR_synchronization2  ( CheckpointData2NV
                                                   , QueueFamilyCheckpointProperties2NV
-                                                  , SemaphoreSubmitInfoKHR
-                                                  , SubmitInfo2KHR
-                                                  , PipelineStageFlags2KHR
-                                                  , PipelineStageFlagBits2KHR
                                                   ) 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 BufferMemoryBarrier2KHR
 
-instance ToCStruct BufferMemoryBarrier2KHR
-instance Show BufferMemoryBarrier2KHR
-
-instance FromCStruct BufferMemoryBarrier2KHR
-
-
 data CheckpointData2NV
 
 instance ToCStruct CheckpointData2NV
@@ -460,73 +458,10 @@
 instance FromCStruct CheckpointData2NV
 
 
-data CommandBufferSubmitInfoKHR
-
-instance ToCStruct CommandBufferSubmitInfoKHR
-instance Show CommandBufferSubmitInfoKHR
-
-instance FromCStruct CommandBufferSubmitInfoKHR
-
-
-data DependencyInfoKHR
-
-instance ToCStruct DependencyInfoKHR
-instance Show DependencyInfoKHR
-
-instance FromCStruct DependencyInfoKHR
-
-
-type role ImageMemoryBarrier2KHR nominal
-data ImageMemoryBarrier2KHR (es :: [Type])
-
-instance (Extendss ImageMemoryBarrier2KHR es, PokeChain es) => ToCStruct (ImageMemoryBarrier2KHR es)
-instance Show (Chain es) => Show (ImageMemoryBarrier2KHR es)
-
-instance (Extendss ImageMemoryBarrier2KHR es, PeekChain es) => FromCStruct (ImageMemoryBarrier2KHR es)
-
-
-data MemoryBarrier2KHR
-
-instance ToCStruct MemoryBarrier2KHR
-instance Show MemoryBarrier2KHR
-
-instance FromCStruct MemoryBarrier2KHR
-
-
-data PhysicalDeviceSynchronization2FeaturesKHR
-
-instance ToCStruct PhysicalDeviceSynchronization2FeaturesKHR
-instance Show PhysicalDeviceSynchronization2FeaturesKHR
-
-instance FromCStruct PhysicalDeviceSynchronization2FeaturesKHR
-
-
 data QueueFamilyCheckpointProperties2NV
 
 instance ToCStruct QueueFamilyCheckpointProperties2NV
 instance Show QueueFamilyCheckpointProperties2NV
 
 instance FromCStruct QueueFamilyCheckpointProperties2NV
-
-
-data SemaphoreSubmitInfoKHR
-
-instance ToCStruct SemaphoreSubmitInfoKHR
-instance Show SemaphoreSubmitInfoKHR
-
-instance FromCStruct SemaphoreSubmitInfoKHR
-
-
-type role SubmitInfo2KHR nominal
-data SubmitInfo2KHR (es :: [Type])
-
-instance (Extendss SubmitInfo2KHR es, PokeChain es) => ToCStruct (SubmitInfo2KHR es)
-instance Show (Chain es) => Show (SubmitInfo2KHR es)
-
-instance (Extendss SubmitInfo2KHR es, PeekChain es) => FromCStruct (SubmitInfo2KHR es)
-
-
-type PipelineStageFlags2KHR = PipelineStageFlagBits2KHR
-
-data PipelineStageFlagBits2KHR
 
diff --git a/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs b/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
--- a/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
+++ b/src/Vulkan/Extensions/VK_KHR_timeline_semaphore.hs
@@ -283,7 +283,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_timeline_semaphore Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_timeline_semaphore Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_uniform_buffer_standard_layout.hs b/src/Vulkan/Extensions/VK_KHR_uniform_buffer_standard_layout.hs
--- a/src/Vulkan/Extensions/VK_KHR_uniform_buffer_standard_layout.hs
+++ b/src/Vulkan/Extensions/VK_KHR_uniform_buffer_standard_layout.hs
@@ -102,7 +102,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_uniform_buffer_standard_layout Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_uniform_buffer_standard_layout Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_variable_pointers.hs b/src/Vulkan/Extensions/VK_KHR_variable_pointers.hs
--- a/src/Vulkan/Extensions/VK_KHR_variable_pointers.hs
+++ b/src/Vulkan/Extensions/VK_KHR_variable_pointers.hs
@@ -87,7 +87,7 @@
 --
 -- All functionality in this extension is included in core Vulkan 1.1, with
 -- the KHR suffix omitted, however support for the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-variablePointersStorageBuffer variablePointersStorageBuffer>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-variablePointersStorageBuffer variablePointersStorageBuffer>
 -- feature is made optional. The original type, enum and command names are
 -- still available as aliases of the core functionality.
 --
@@ -115,9 +115,9 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-VariablePointers VariablePointers>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-VariablePointers VariablePointers>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-VariablePointersStorageBuffer VariablePointersStorageBuffer>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-VariablePointersStorageBuffer VariablePointersStorageBuffer>
 --
 -- == Issues
 --
@@ -155,7 +155,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_variable_pointers Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_variable_pointers Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_vulkan_memory_model.hs b/src/Vulkan/Extensions/VK_KHR_vulkan_memory_model.hs
--- a/src/Vulkan/Extensions/VK_KHR_vulkan_memory_model.hs
+++ b/src/Vulkan/Extensions/VK_KHR_vulkan_memory_model.hs
@@ -63,7 +63,7 @@
 -- == Description
 --
 -- The @VK_KHR_vulkan_memory_model@ extension allows use of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-model Vulkan Memory Model>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-model Vulkan Memory Model>,
 -- which formally defines how to synchronize memory accesses to the same
 -- memory locations performed by multiple shader invocations.
 --
@@ -102,7 +102,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-VulkanMemoryModel VulkanMemoryModelKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-VulkanMemoryModel VulkanMemoryModelKHR>
 --
 -- == Version History
 --
@@ -122,7 +122,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_vulkan_memory_model Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_vulkan_memory_model Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs
@@ -182,7 +182,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -322,7 +322,7 @@
                            WaylandSurfaceCreateInfoKHR
                         -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                            -- surface object when there is no more specific allocator available (see
-                           -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                           -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                            ("allocator" ::: Maybe AllocationCallbacks)
                         -> io (SurfaceKHR)
 createWaylandSurfaceKHR instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_wayland_surface.hs-boot
@@ -182,7 +182,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_wayland_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs b/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
--- a/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
+++ b/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs
@@ -56,7 +56,7 @@
 -- == New Structures
 --
 -- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
---     'Vulkan.Extensions.VK_KHR_synchronization2.SubmitInfo2KHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2':
 --
 --     -   'Win32KeyedMutexAcquireReleaseInfoKHR'
 --
@@ -83,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs-boot b/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_win32_keyed_mutex.hs-boot
@@ -56,7 +56,7 @@
 -- == New Structures
 --
 -- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
---     'Vulkan.Extensions.VK_KHR_synchronization2.SubmitInfo2KHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2':
 --
 --     -   'Win32KeyedMutexAcquireReleaseInfoKHR'
 --
@@ -83,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_keyed_mutex Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs
@@ -208,7 +208,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -347,7 +347,7 @@
                          Win32SurfaceCreateInfoKHR
                       -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                          -- surface object when there is no more specific allocator available (see
-                         -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                         -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                          ("allocator" ::: Maybe AllocationCallbacks)
                       -> io (SurfaceKHR)
 createWin32SurfaceKHR instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_win32_surface.hs-boot
@@ -208,7 +208,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_win32_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs
--- a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs
+++ b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs
@@ -94,11 +94,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
 --
 -- == Version History
 --
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_workgroup_memory_explicit_layout Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_workgroup_memory_explicit_layout Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_workgroup_memory_explicit_layout.hs-boot
@@ -94,11 +94,11 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayoutKHR WorkgroupMemoryExplicitLayoutKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout8BitAccessKHR WorkgroupMemoryExplicitLayout8BitAccessKHR>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-WorkgroupMemoryExplicitLayout16BitAccessKHR WorkgroupMemoryExplicitLayout16BitAccessKHR>
 --
 -- == Version History
 --
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_workgroup_memory_explicit_layout Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_workgroup_memory_explicit_layout Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs
@@ -164,7 +164,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -303,7 +303,7 @@
                        XcbSurfaceCreateInfoKHR
                     -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                        -- surface object when there is no more specific allocator available (see
-                       -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                       -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                        ("allocator" ::: Maybe AllocationCallbacks)
                     -> io (SurfaceKHR)
 createXcbSurfaceKHR instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_xcb_surface.hs-boot
@@ -164,7 +164,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xcb_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
--- a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
+++ b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs
@@ -164,7 +164,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -305,7 +305,7 @@
                         XlibSurfaceCreateInfoKHR
                      -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                         -- surface object when there is no more specific allocator available (see
-                        -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                        -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                         ("allocator" ::: Maybe AllocationCallbacks)
                      -> io (SurfaceKHR)
 createXlibSurfaceKHR instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_KHR_xlib_surface.hs-boot
@@ -164,7 +164,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_xlib_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs b/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs
--- a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs
+++ b/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs
@@ -23,6 +23,11 @@
 --
 --     -   Requires @VK_KHR_get_physical_device_properties2@
 --
+-- [__Deprecation state__]
+--
+--     -   /Promoted/ to
+--         <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#versions-1.3-promotions Vulkan 1.3>
+--
 -- [__Contact__]
 --
 --     -   Alan Baker
@@ -33,12 +38,13 @@
 -- [__Last Modified Date__]
 --     2020-11-18
 --
+-- [__Interactions and External Dependencies__]
+--
+--     -   Promoted to Vulkan 1.3 Core
+--
 -- [__IP Status__]
 --     No known IP claims.
 --
--- [__Interactions and External Dependencies__]
---     None
---
 -- [__Contributors__]
 --
 --     -   Alan Baker, Google
@@ -71,8 +77,14 @@
 --
 -- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
 --
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR'
+--     -   'STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR'
 --
+-- == Promotion to Vulkan 1.3
+--
+-- Functionality in this extension is included in core Vulkan 1.3, with the
+-- KHR suffix omitted. The original type, enum and command names are still
+-- available as aliases of the core functionality.
+--
 -- == Version History
 --
 -- -   Revision 1, 2020-11-18 (Alan Baker)
@@ -86,109 +98,27 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_zero_initialize_workgroup_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_KHR_zero_initialize_workgroup_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory  ( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(..)
+module Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory  ( pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR
+                                                                  , PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
                                                                   , KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION
                                                                   , pattern KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION
                                                                   , KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME
                                                                   , pattern KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME
                                                                   ) where
 
-import Foreign.Marshal.Alloc (allocaBytes)
-import Foreign.Ptr (nullPtr)
-import Foreign.Ptr (plusPtr)
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (FromCStruct(..))
-import Vulkan.CStruct (ToCStruct)
-import Vulkan.CStruct (ToCStruct(..))
-import Vulkan.Zero (Zero(..))
 import Data.String (IsString)
-import Data.Typeable (Typeable)
-import Foreign.Storable (Storable)
-import Foreign.Storable (Storable(peek))
-import Foreign.Storable (Storable(poke))
-import qualified Foreign.Storable (Storable(..))
-import GHC.Generics (Generic)
-import Foreign.Ptr (Ptr)
-import Data.Kind (Type)
-import Vulkan.Core10.FundamentalTypes (bool32ToBool)
-import Vulkan.Core10.FundamentalTypes (boolToBool32)
-import Vulkan.Core10.FundamentalTypes (Bool32)
-import Vulkan.Core10.Enums.StructureType (StructureType)
-import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR))
--- | VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR - Structure
--- describing support for zero initialization of workgroup memory by an
--- implementation
---
--- = Members
---
--- This structure describes the following feature:
---
--- = Description
---
--- If the 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
--- structure is included in the @pNext@ chain of the
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2'
--- structure passed to
--- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.getPhysicalDeviceFeatures2',
--- it is filled in to indicate whether each corresponding feature is
--- supported. 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
--- /can/ also be used in the @pNext@ chain of
--- 'Vulkan.Core10.Device.DeviceCreateInfo' to selectively enable these
--- features.
---
--- == Valid Usage (Implicit)
---
--- = See Also
---
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_zero_initialize_workgroup_memory VK_KHR_zero_initialize_workgroup_memory>,
--- 'Vulkan.Core10.FundamentalTypes.Bool32',
--- 'Vulkan.Core10.Enums.StructureType.StructureType'
-data PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
-  { -- | #features-shaderZeroInitializeWorkgroupMemory#
-    -- @shaderZeroInitializeWorkgroupMemory@ specifies whether the
-    -- implementation supports initializing a variable in Workgroup storage
-    -- class.
-    shaderZeroInitializeWorkgroupMemory :: Bool }
-  deriving (Typeable, Eq)
-#if defined(GENERIC_INSTANCES)
-deriving instance Generic (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR)
-#endif
-deriving instance Show PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
+import Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory (PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures)
+import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES))
+-- No documentation found for TopLevel "VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR"
+pattern STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES
 
-instance ToCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR where
-  withCStruct x f = allocaBytes 24 $ \p -> pokeCStruct p x (f p)
-  pokeCStruct p PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR{..} f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (shaderZeroInitializeWorkgroupMemory))
-    f
-  cStructSize = 24
-  cStructAlignment = 8
-  pokeZeroCStruct p f = do
-    poke ((p `plusPtr` 0 :: Ptr StructureType)) (STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR)
-    poke ((p `plusPtr` 8 :: Ptr (Ptr ()))) (nullPtr)
-    poke ((p `plusPtr` 16 :: Ptr Bool32)) (boolToBool32 (zero))
-    f
 
-instance FromCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR where
-  peekCStruct p = do
-    shaderZeroInitializeWorkgroupMemory <- peek @Bool32 ((p `plusPtr` 16 :: Ptr Bool32))
-    pure $ PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
-             (bool32ToBool shaderZeroInitializeWorkgroupMemory)
-
-instance Storable PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR where
-  sizeOf ~_ = 24
-  alignment ~_ = 8
-  peek = peekCStruct
-  poke ptr poked = pokeCStruct ptr poked (pure ())
-
-instance Zero PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR where
-  zero = PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
-           zero
+-- No documentation found for TopLevel "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR"
+type PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures
 
 
 type KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION = 1
diff --git a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs-boot b/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs-boot
deleted file mode 100644
--- a/src/Vulkan/Extensions/VK_KHR_zero_initialize_workgroup_memory.hs-boot
+++ /dev/null
@@ -1,105 +0,0 @@
-{-# language CPP #-}
--- | = Name
---
--- VK_KHR_zero_initialize_workgroup_memory - device extension
---
--- == VK_KHR_zero_initialize_workgroup_memory
---
--- [__Name String__]
---     @VK_KHR_zero_initialize_workgroup_memory@
---
--- [__Extension Type__]
---     Device extension
---
--- [__Registered Extension Number__]
---     326
---
--- [__Revision__]
---     1
---
--- [__Extension and Version Dependencies__]
---
---     -   Requires Vulkan 1.0
---
---     -   Requires @VK_KHR_get_physical_device_properties2@
---
--- [__Contact__]
---
---     -   Alan Baker
---         <https://github.com/KhronosGroup/Vulkan-Docs/issues/new?body=[VK_KHR_zero_initialize_workgroup_memory] @alan-baker%0A<<Here describe the issue or question you have about the VK_KHR_zero_initialize_workgroup_memory extension>> >
---
--- == Other Extension Metadata
---
--- [__Last Modified Date__]
---     2020-11-18
---
--- [__IP Status__]
---     No known IP claims.
---
--- [__Interactions and External Dependencies__]
---     None
---
--- [__Contributors__]
---
---     -   Alan Baker, Google
---
---     -   Jeff Bolz, Nvidia
---
---     -   Jason Ekstrand, Intel
---
--- == Description
---
--- This extension allows the use of a null constant initializer on shader
--- Workgroup memory variables, allowing implementations to expose any
--- special hardware or instructions they may have. Zero initialization is
--- commonly used by applications running untrusted content (e.g. web
--- browsers) as way of defeating memory-scraping attacks.
---
--- == New Structures
---
--- -   Extending
---     'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2',
---     'Vulkan.Core10.Device.DeviceCreateInfo':
---
---     -   'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
---
--- == New Enum Constants
---
--- -   'KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME'
---
--- -   'KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION'
---
--- -   Extending 'Vulkan.Core10.Enums.StructureType.StructureType':
---
---     -   'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR'
---
--- == Version History
---
--- -   Revision 1, 2020-11-18 (Alan Baker)
---
---     -   Internal draft version
---
--- == See Also
---
--- 'PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR'
---
--- == Document Notes
---
--- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_KHR_zero_initialize_workgroup_memory Vulkan Specification>
---
--- This page is a generated document. Fixes and changes should be made to
--- the generator scripts, not directly.
-module Vulkan.Extensions.VK_KHR_zero_initialize_workgroup_memory  (PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR) where
-
-import Vulkan.CStruct (FromCStruct)
-import Vulkan.CStruct (ToCStruct)
-import Data.Kind (Type)
-
-data PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
-
-instance ToCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
-instance Show PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
-
-instance FromCStruct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR
-
diff --git a/src/Vulkan/Extensions/VK_MVK_ios_surface.hs b/src/Vulkan/Extensions/VK_MVK_ios_surface.hs
--- a/src/Vulkan/Extensions/VK_MVK_ios_surface.hs
+++ b/src/Vulkan/Extensions/VK_MVK_ios_surface.hs
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -207,7 +207,7 @@
 -- -   @pAllocator@ is the allocator used for host memory allocated for the
 --     surface object when there is no more specific allocator available
 --     (see
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
 --
 -- -   @pSurface@ is a pointer to a 'Vulkan.Extensions.Handles.SurfaceKHR'
 --     handle in which the created surface object is returned.
diff --git a/src/Vulkan/Extensions/VK_MVK_ios_surface.hs-boot b/src/Vulkan/Extensions/VK_MVK_ios_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_MVK_ios_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_MVK_ios_surface.hs-boot
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_ios_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_MVK_macos_surface.hs b/src/Vulkan/Extensions/VK_MVK_macos_surface.hs
--- a/src/Vulkan/Extensions/VK_MVK_macos_surface.hs
+++ b/src/Vulkan/Extensions/VK_MVK_macos_surface.hs
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -209,7 +209,7 @@
 -- -   @pAllocator@ is the allocator used for host memory allocated for the
 --     surface object when there is no more specific allocator available
 --     (see
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
 --
 -- -   @pSurface@ is a pointer to a 'Vulkan.Extensions.Handles.SurfaceKHR'
 --     handle in which the created surface object is returned.
diff --git a/src/Vulkan/Extensions/VK_MVK_macos_surface.hs-boot b/src/Vulkan/Extensions/VK_MVK_macos_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_MVK_macos_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_MVK_macos_surface.hs-boot
@@ -106,7 +106,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_MVK_macos_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NN_vi_surface.hs b/src/Vulkan/Extensions/VK_NN_vi_surface.hs
--- a/src/Vulkan/Extensions/VK_NN_vi_surface.hs
+++ b/src/Vulkan/Extensions/VK_NN_vi_surface.hs
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -249,7 +249,7 @@
                      ViSurfaceCreateInfoNN
                   -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                      -- surface object when there is no more specific allocator available (see
-                     -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                     -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                      ("allocator" ::: Maybe AllocationCallbacks)
                   -> io (SurfaceKHR)
 createViSurfaceNN instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot b/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_NN_vi_surface.hs-boot
@@ -105,7 +105,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NN_vi_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NVX_binary_import.hs b/src/Vulkan/Extensions/VK_NVX_binary_import.hs
--- a/src/Vulkan/Extensions/VK_NVX_binary_import.hs
+++ b/src/Vulkan/Extensions/VK_NVX_binary_import.hs
@@ -400,7 +400,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NVX_binary_import.hs-boot b/src/Vulkan/Extensions/VK_NVX_binary_import.hs-boot
--- a/src/Vulkan/Extensions/VK_NVX_binary_import.hs-boot
+++ b/src/Vulkan/Extensions/VK_NVX_binary_import.hs-boot
@@ -400,7 +400,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_binary_import Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs b/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs
--- a/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs
+++ b/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot b/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot
--- a/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot
+++ b/src/Vulkan/Extensions/VK_NVX_image_view_handle.hs-boot
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_image_view_handle Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
--- a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
+++ b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs
@@ -57,14 +57,14 @@
 -- This extension adds a new way to write shaders to be used with multiview
 -- subpasses, where the attributes for all views are written out by a
 -- single invocation of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
 -- Related SPIR-V and GLSL extensions
 -- @SPV_NVX_multiview_per_view_attributes@ and
 -- @GL_NVX_multiview_per_view_attributes@ introduce per-view position and
 -- viewport mask attributes arrays, and this extension defines how those
 -- per-view attribute arrays are interpreted by Vulkan. Pipelines using
 -- per-view attributes /may/ only execute the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>
 -- once for all views rather than once per-view, which reduces redundant
 -- shading work.
 --
@@ -113,13 +113,13 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
 --
 -- == Examples
 --
@@ -153,7 +153,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot
--- a/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot
+++ b/src/Vulkan/Extensions/VK_NVX_multiview_per_view_attributes.hs-boot
@@ -57,14 +57,14 @@
 -- This extension adds a new way to write shaders to be used with multiview
 -- subpasses, where the attributes for all views are written out by a
 -- single invocation of the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>.
 -- Related SPIR-V and GLSL extensions
 -- @SPV_NVX_multiview_per_view_attributes@ and
 -- @GL_NVX_multiview_per_view_attributes@ introduce per-view position and
 -- viewport mask attributes arrays, and this extension defines how those
 -- per-view attribute arrays are interpreted by Vulkan. Pipelines using
 -- per-view attributes /may/ only execute the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stages>
 -- once for all views rather than once per-view, which reduces redundant
 -- shading work.
 --
@@ -113,13 +113,13 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-positionperview PositionPerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmaskperview ViewportMaskPerViewNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-PerViewAttributesNV PerViewAttributesNV>
 --
 -- == Examples
 --
@@ -153,7 +153,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NVX_multiview_per_view_attributes Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_acquire_winrt_display.hs b/src/Vulkan/Extensions/VK_NV_acquire_winrt_display.hs
--- a/src/Vulkan/Extensions/VK_NV_acquire_winrt_display.hs
+++ b/src/Vulkan/Extensions/VK_NV_acquire_winrt_display.hs
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_acquire_winrt_display Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_acquire_winrt_display Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs b/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
--- a/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
+++ b/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs
@@ -199,7 +199,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs-boot b/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_clip_space_w_scaling.hs-boot
@@ -199,7 +199,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_clip_space_w_scaling Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
--- a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
+++ b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs
@@ -84,9 +84,9 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsNV ComputeDerivativeGroupQuadsNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsNV ComputeDerivativeGroupQuadsNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearNV ComputeDerivativeGroupLinearNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearNV ComputeDerivativeGroupLinearNV>
 --
 -- == Issues
 --
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -157,7 +157,7 @@
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-quad Quad shader scope>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-quad Quad shader scope>
 -- for more information.
 --
 -- If the @VkPhysicalDeviceComputeShaderDerivativesFeaturesNVfeatures@.
diff --git a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs-boot b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_compute_shader_derivatives.hs-boot
@@ -84,9 +84,9 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsNV ComputeDerivativeGroupQuadsNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupQuadsNV ComputeDerivativeGroupQuadsNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearNV ComputeDerivativeGroupLinearNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ComputeDerivativeGroupLinearNV ComputeDerivativeGroupLinearNV>
 --
 -- == Issues
 --
@@ -113,7 +113,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_compute_shader_derivatives Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
--- a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs
@@ -107,7 +107,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
 --
 -- == Issues
 --
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_cooperative_matrix.hs-boot
@@ -107,7 +107,7 @@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-CooperativeMatrixNV CooperativeMatrixNV>
 --
 -- == Issues
 --
@@ -143,7 +143,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_cooperative_matrix Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
--- a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
+++ b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs
@@ -48,24 +48,24 @@
 -- differs from a conventional image in the following ways:
 --
 -- -   Texels are centered on integer coordinates. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>
 --
 -- -   Normalized coordinates are scaled using coord × (dim - 1) rather
 --     than coord × dim, where dim is the size of one dimension of the
 --     image. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.
 --
 -- -   Partial derivatives are scaled using coord × (dim - 1) rather than
 --     coord × dim. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.
 --
 -- -   Calculation of the next higher lod size goes according to ⌈dim \/ 2⌉
 --     rather than ⌊dim \/ 2⌋. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
 --
 -- -   The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images.
 --     See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
 --
 -- This image organization is designed to facilitate a system like Ptex
 -- with separate textures for each face of a subdivision or polygon mesh.
@@ -148,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -213,7 +213,7 @@
     -- 'Vulkan.Core10.Image.ImageCreateInfo'::@flags@ containing
     -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV'.
     -- See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-images-corner-sampled Corner-Sampled Images>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-images-corner-sampled Corner-Sampled Images>.
     cornerSampledImage :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_corner_sampled_image.hs-boot
@@ -48,24 +48,24 @@
 -- differs from a conventional image in the following ways:
 --
 -- -   Texels are centered on integer coordinates. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-unnormalized-to-integer Unnormalized Texel Coordinate Operations>
 --
 -- -   Normalized coordinates are scaled using coord × (dim - 1) rather
 --     than coord × dim, where dim is the size of one dimension of the
 --     image. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-normalized-to-unnormalized normalized texel coordinate transform>.
 --
 -- -   Partial derivatives are scaled using coord × (dim - 1) rather than
 --     coord × dim. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-scale-factor Scale Factor Operation>.
 --
 -- -   Calculation of the next higher lod size goes according to ⌈dim \/ 2⌉
 --     rather than ⌊dim \/ 2⌋. See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
 --
 -- -   The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images.
 --     See
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-image-miplevel-sizing Image Miplevel Sizing>.
 --
 -- This image organization is designed to facilitate a system like Ptex
 -- with separate textures for each face of a subdivision or polygon mesh.
@@ -148,7 +148,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_corner_sampled_image Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
--- a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
+++ b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs
@@ -126,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -326,7 +326,7 @@
 data PhysicalDeviceCoverageReductionModeFeaturesNV = PhysicalDeviceCoverageReductionModeFeaturesNV
   { -- | #features-coverageReductionMode# @coverageReductionMode@ indicates
     -- whether the implementation supports coverage reduction modes. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reduction Coverage Reduction>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-coverage-reduction Coverage Reduction>.
     coverageReductionMode :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -591,7 +591,7 @@
 -- | 'COVERAGE_REDUCTION_MODE_TRUNCATE_NV' specifies that for color samples
 -- present in the color attachments, a color sample is covered if the pixel
 -- coverage sample with the same
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
 -- i is covered; other pixel coverage samples are discarded.
 pattern COVERAGE_REDUCTION_MODE_TRUNCATE_NV = CoverageReductionModeNV 1
 {-# complete COVERAGE_REDUCTION_MODE_MERGE_NV,
diff --git a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs-boot b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_coverage_reduction_mode.hs-boot
@@ -126,7 +126,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_coverage_reduction_mode Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs b/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
--- a/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
+++ b/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs
@@ -171,7 +171,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs-boot b/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_dedicated_allocation.hs-boot
@@ -171,7 +171,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
--- a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
+++ b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs
@@ -82,7 +82,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs-boot b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_dedicated_allocation_image_aliasing.hs-boot
@@ -82,7 +82,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_dedicated_allocation_image_aliasing Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs-boot b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostic_checkpoints.hs-boot
@@ -100,7 +100,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostic_checkpoints Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -288,7 +288,7 @@
 pattern DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV     = DeviceDiagnosticsConfigFlagBitsNV 0x00000002
 -- | 'DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV' enables
 -- automatic insertion of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-diagnostic-checkpoints diagnostic checkpoints>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#device-diagnostic-checkpoints diagnostic checkpoints>
 -- for draw calls, dispatches, trace rays, and copies. The CPU call stack
 -- at the time of the command will be associated as the marker data for the
 -- automatically inserted checkpoints.
diff --git a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs-boot b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_device_diagnostics_config.hs-boot
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_diagnostics_config Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -540,7 +540,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_generated_commands Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -740,7 +740,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -796,7 +796,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -804,7 +804,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-02697# For each set /n/
 --     that is statically used by the 'Vulkan.Core10.Handles.Pipeline'
@@ -1007,50 +1007,50 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419# If the
 --     bound graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04137# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1058,11 +1058,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1070,11 +1070,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04139# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1082,11 +1082,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04140# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1094,11 +1094,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1106,11 +1106,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1118,21 +1118,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04876# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04877# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -1150,14 +1150,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-blendEnable-04727# If
@@ -1181,7 +1181,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06172# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1190,7 +1190,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06173# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1199,7 +1199,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06174# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1208,7 +1208,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06175# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1217,7 +1217,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06176# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1226,7 +1226,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06177# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1235,61 +1235,61 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-viewMask-06178# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06179# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06180# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06181# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06182# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06183# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1298,7 +1298,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06184# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1311,11 +1311,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -1327,13 +1327,13 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06186# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1341,17 +1341,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06187# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1359,7 +1359,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06188# If
 --     the currently bound pipeline was created without a
@@ -1367,11 +1367,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -1380,37 +1380,37 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06189# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06190# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-06198# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -1434,7 +1434,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-03420# If
 --     the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetPrimitiveTopologyEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1450,7 +1450,7 @@
 --     graphics pipeline was created with both the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic states enabled, then
 --     'Vulkan.Extensions.VK_EXT_vertex_input_dynamic_state.cmdSetVertexInputEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1458,7 +1458,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04913# If the bound
 --     graphics pipeline was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VERTEX_INPUT_EXT'
 --     dynamic state enabled, then
@@ -1486,7 +1486,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-None-04879# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
+--     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT'
 --     dynamic state enabled then
 --     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetPrimitiveRestartEnableEXT'
 --     /must/ have been called in the current command buffer prior to this
@@ -1524,7 +1524,7 @@
 --
 -- -   #VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1617,7 +1617,7 @@
 --
 -- -   #VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1709,7 +1709,7 @@
 --
 -- -   #VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1797,7 +1797,7 @@
 --
 -- -   #VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1855,7 +1855,7 @@
 --
 -- -   #VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -1903,7 +1903,7 @@
                                   -- command layout.
                                   IndirectCommandsLayoutCreateInfoNV
                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter.
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io (IndirectCommandsLayoutNV)
@@ -1963,7 +1963,7 @@
 --
 -- -   #VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
@@ -2004,7 +2004,7 @@
                                 -> -- | @indirectCommandsLayout@ is the layout to destroy.
                                    IndirectCommandsLayoutNV
                                 -> -- | @pAllocator@ controls host memory allocation as described in the
-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                    -- chapter.
                                    ("allocator" ::: Maybe AllocationCallbacks)
                                 -> io ()
@@ -2051,7 +2051,7 @@
   { -- | #features-deviceGeneratedCommands# @deviceGeneratedCommands@ indicates
     -- whether the implementation supports functionality to generate commands
     -- on the device. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#device-generated-commands Device-Generated Commands>.
     deviceGeneratedCommands :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
@@ -2372,7 +2372,7 @@
 --
 -- -   #VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887#
 --     The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-deviceGeneratedCommands ::deviceGeneratedCommands>
 --     feature /must/ be enabled
 --
 -- == Valid Usage (Implicit)
diff --git a/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot b/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_device_generated_commands.hs-boot
@@ -540,7 +540,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_device_generated_commands Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_device_generated_commands Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory.hs b/src/Vulkan/Extensions/VK_NV_external_memory.hs
--- a/src/Vulkan/Extensions/VK_NV_external_memory.hs
+++ b/src/Vulkan/Extensions/VK_NV_external_memory.hs
@@ -85,7 +85,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -130,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory.hs-boot b/src/Vulkan/Extensions/VK_NV_external_memory.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_external_memory.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_external_memory.hs-boot
@@ -85,7 +85,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -130,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs b/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
--- a/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs
@@ -132,7 +132,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs-boot b/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_capabilities.hs-boot
@@ -132,7 +132,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_capabilities Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs b/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs
--- a/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs-boot b/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_rdma.hs-boot
@@ -166,7 +166,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_rdma Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs
--- a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs
@@ -85,7 +85,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -271,7 +271,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_external_memory_win32.hs-boot
@@ -85,7 +85,7 @@
 --
 -- 1) If memory objects are shared between processes and APIs, is this
 -- considered aliasing according to the rules outlined in the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing Memory Aliasing>
 -- section?
 --
 -- __RESOLVED__: Yes, but strict exceptions to the rules are added to allow
@@ -271,7 +271,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_external_memory_win32 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_fill_rectangle.hs b/src/Vulkan/Extensions/VK_NV_fill_rectangle.hs
--- a/src/Vulkan/Extensions/VK_NV_fill_rectangle.hs
+++ b/src/Vulkan/Extensions/VK_NV_fill_rectangle.hs
@@ -68,7 +68,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fill_rectangle Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fill_rectangle Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs b/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
--- a/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
+++ b/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -143,7 +143,7 @@
 -- fragment color output and, if so, which output is replaced.
 --
 -- If @coverageToColorEnable@ is 'Vulkan.Core10.FundamentalTypes.TRUE', the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage mask>
 -- replaces the first component of the color value corresponding to the
 -- fragment shader output location with @Location@ equal to
 -- @coverageToColorLocation@ and @Index@ equal to zero. If the color
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs-boot b/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_fragment_coverage_to_color.hs-boot
@@ -86,7 +86,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_coverage_to_color Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
--- a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs
@@ -104,17 +104,17 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnv BaryCoordNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnv BaryCoordNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspnv BaryCoordNoPerspNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspnv BaryCoordNoPerspNV>
 --
 -- == New SPIR-V Decorations
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexnv PerVertexNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexnv PerVertexNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricNV FragmentBarycentricNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricNV FragmentBarycentricNV>
 --
 -- == Issues
 --
@@ -176,7 +176,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -220,7 +220,7 @@
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-barycentric Barycentric Interpolation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-barycentric Barycentric Interpolation>
 -- for more information.
 --
 -- If the 'PhysicalDeviceFragmentShaderBarycentricFeaturesNV' structure is
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs-boot b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shader_barycentric.hs-boot
@@ -104,17 +104,17 @@
 --
 -- == New Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnv BaryCoordNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnv BaryCoordNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspnv BaryCoordNoPerspNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-barycoordnoperspnv BaryCoordNoPerspNV>
 --
 -- == New SPIR-V Decorations
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexnv PerVertexNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-interpolation-decorations-pervertexnv PerVertexNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricNV FragmentBarycentricNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-FragmentBarycentricNV FragmentBarycentricNV>
 --
 -- == Issues
 --
@@ -176,7 +176,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_shader_barycentric Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs
--- a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs
@@ -170,7 +170,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -293,13 +293,13 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04576#
 --     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>
 --     is not enabled, @shadingRate@ /must/ be
 --     'FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-supersampleFragmentShadingRates-04577#
 --     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-supersampleFragmentShadingRates supersampleFragmentShadingRates>
 --     is not enabled, @shadingRate@ /must/ not be
 --     'FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV',
 --     'FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV',
@@ -308,37 +308,37 @@
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-noInvocationFragmentShadingRates-04578#
 --     If
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-noInvocationFragmentShadingRates noInvocationFragmentShadingRates>
 --     is not enabled, @shadingRate@ /must/ not be
 --     'FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentShadingRateEnums-04579#
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentShadingRateEnums fragmentShadingRateEnums>
 --     /must/ be enabled
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04580#
 --     One of
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-pipelineFragmentShadingRate pipelineFragmentShadingRate>,
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate>,
 --     or
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate>
 --     /must/ be enabled
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-primitiveFragmentShadingRate-04581#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-primitiveFragmentShadingRate primitiveFragmentShadingRate feature>
 --     is not enabled, @combinerOps@[0] /must/ be
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-attachmentFragmentShadingRate-04582#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-attachmentFragmentShadingRate attachmentFragmentShadingRate feature>
 --     is not enabled, @combinerOps@[1] /must/ be
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --
 -- -   #VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentSizeNonTrivialCombinerOps-04583#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentSizeNonTrivialCombinerOps>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#limits-fragmentShadingRateNonTrivialCombinerOps fragmentSizeNonTrivialCombinerOps>
 --     limit is not supported, elements of @combinerOps@ /must/ be either
 --     'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR'
 --     or
@@ -401,12 +401,12 @@
                                 -> -- | @combinerOps@ specifies a
                                    -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
                                    -- determining how the
-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
                                    -- and
-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
                                    -- are
-                                   -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+                                   -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
                                    -- for fragments generated by subsequent drawing commands.
                                    ("combinerOps" ::: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR))
                                 -> io ()
@@ -528,7 +528,7 @@
 -- property.
 --
 -- These properties are related to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate fragment shading rates>.
 --
 -- == Valid Usage (Implicit)
 --
@@ -641,12 +641,12 @@
   , -- | @combinerOps@ specifies
     -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.FragmentShadingRateCombinerOpKHR'
     -- values determining how the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-pipeline pipeline>,
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-primitive primitive>,
     -- and
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-attachment attachment shading rates>
     -- are
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate-combining combined>
     -- for fragments generated by drawing commands using the created pipeline.
     combinerOps :: (FragmentShadingRateCombinerOpKHR, FragmentShadingRateCombinerOpKHR)
   }
diff --git a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_fragment_shading_rate_enums.hs-boot
@@ -170,7 +170,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_fragment_shading_rate_enums Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs b/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
--- a/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
+++ b/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -228,7 +228,7 @@
 -- @coverageModulationMode@ is 'COVERAGE_MODULATION_MODE_NONE_NV'.
 --
 -- If the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-coverage-reduction coverage reduction mode>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-coverage-reduction coverage reduction mode>
 -- is
 -- 'Vulkan.Extensions.VK_NV_coverage_reduction_mode.COVERAGE_REDUCTION_MODE_TRUNCATE_NV',
 -- each color sample is associated with only a single coverage sample. In
diff --git a/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs-boot b/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_framebuffer_mixed_samples.hs-boot
@@ -116,7 +116,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_framebuffer_mixed_samples Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_geometry_shader_passthrough.hs b/src/Vulkan/Extensions/VK_NV_geometry_shader_passthrough.hs
--- a/src/Vulkan/Extensions/VK_NV_geometry_shader_passthrough.hs
+++ b/src/Vulkan/Extensions/VK_NV_geometry_shader_passthrough.hs
@@ -84,13 +84,13 @@
 --
 -- == New Variable Decoration
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-passthrough-passthrough PassthroughNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#geometry-passthrough-passthrough PassthroughNV>
 --     in
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-passthrough Geometry Shader Passthrough>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#geometry-passthrough Geometry Shader Passthrough>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-GeometryShaderPassthroughNV GeometryShaderPassthroughNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-GeometryShaderPassthroughNV GeometryShaderPassthroughNV>
 --
 -- == Issues
 --
@@ -117,7 +117,7 @@
 -- 2) How does interface matching work with passthrough geometry shaders?
 --
 -- __RESOLVED__: This is described in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#geometry-passthrough-interface Passthrough Interface Matching>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#geometry-passthrough-interface Passthrough Interface Matching>.
 -- In GL when using passthough geometry shaders in separable mode, all
 -- inputs must also be explicitly assigned location layout qualifiers. In
 -- Vulkan all SPIR-V shader inputs (except built-ins) must also have
@@ -201,7 +201,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_geometry_shader_passthrough Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_geometry_shader_passthrough Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_glsl_shader.hs b/src/Vulkan/Extensions/VK_NV_glsl_shader.hs
--- a/src/Vulkan/Extensions/VK_NV_glsl_shader.hs
+++ b/src/Vulkan/Extensions/VK_NV_glsl_shader.hs
@@ -103,7 +103,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_glsl_shader Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_glsl_shader Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs
--- a/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs
+++ b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs
@@ -146,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -217,8 +217,8 @@
   { -- | #features-inheritedViewportScissor2D# @inheritedViewportScissor2D@
     -- indicates whether secondary command buffers can inherit most of the
     -- dynamic state affected by
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT',
-    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT',
+    -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT',
     -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT',
     -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT' or
     -- 'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR', from a primary
@@ -275,7 +275,7 @@
 --
 -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR'
 --
--- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+-- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --
 -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DISCARD_RECTANGLE_EXT'
 --
@@ -284,7 +284,7 @@
 --
 -- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT'
 --
--- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+-- -   'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --
 -- If @viewportScissor2D@ is 'Vulkan.Core10.FundamentalTypes.FALSE', then
 -- the command buffer does not inherit the listed dynamic state, and
@@ -349,13 +349,13 @@
 --
 -- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04782#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-inheritedViewportScissor2D inherited viewport scissor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-inheritedViewportScissor2D inherited viewport scissor>
 --     feature is not enabled, @viewportScissor2D@ /must/ be
 --     'Vulkan.Core10.FundamentalTypes.FALSE'
 --
 -- -   #VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04783#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled and @viewportScissor2D@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', then @viewportDepthCount@
 --     /must/ be @1@
diff --git a/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs-boot b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_inherited_viewport_scissor.hs-boot
@@ -146,7 +146,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_inherited_viewport_scissor Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs b/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs
--- a/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs
+++ b/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs
@@ -51,20 +51,20 @@
 -- attachments when all the color attachments in the render pass instance
 -- have 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' tiling. This
 -- extension adds a new flag bit
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 -- that extends the existing
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
+-- 'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatFeatureFlagBits2KHR'
 -- bits. This flag /can/ be set for renderable color formats in the
 -- 'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatProperties3KHR'::@linearTilingFeatures@
 -- format properties structure member. Formats with the
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 -- flag /may/ be used as color attachments as long as all the color
 -- attachments in the render pass instance have
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' tiling, and the
 -- formats their images views are created with have
 -- 'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatProperties3KHR'::@linearTilingFeatures@
 -- which include
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'.
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'.
 -- This extension supports both dynamic rendering and traditional render
 -- passes.
 --
@@ -91,9 +91,9 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- == Version History
 --
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_linear_color_attachment Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_linear_color_attachment Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -117,9 +117,6 @@
                                                         , pattern NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION
                                                         , NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME
                                                         , pattern NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME
-                                                        , FormatFeatureFlagBits2KHR(..)
-                                                        , FormatFeatureFlags2KHR
-                                                        , Flags64
                                                         ) where
 
 import Foreign.Marshal.Alloc (allocaBytes)
@@ -144,9 +141,6 @@
 import Vulkan.Core10.FundamentalTypes (Bool32)
 import Vulkan.Core10.Enums.StructureType (StructureType)
 import Vulkan.Core10.Enums.StructureType (StructureType(STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV))
-import Vulkan.Core10.FundamentalTypes (Flags64)
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlagBits2KHR(..))
-import Vulkan.Extensions.VK_KHR_acceleration_structure (FormatFeatureFlags2KHR)
 -- | VkPhysicalDeviceLinearColorAttachmentFeaturesNV - Structure describing
 -- whether
 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary Linear Color Attachment>
@@ -178,7 +172,7 @@
 data PhysicalDeviceLinearColorAttachmentFeaturesNV = PhysicalDeviceLinearColorAttachmentFeaturesNV
   { -- | #features-linearColorAttachment# @linearColorAttachment@ indicates
     -- whether the implementation supports renderable
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#glossary Linear Color Attachment>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#glossary Linear Color Attachment>
     linearColorAttachment :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs-boot b/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_linear_color_attachment.hs-boot
@@ -51,20 +51,20 @@
 -- attachments when all the color attachments in the render pass instance
 -- have 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' tiling. This
 -- extension adds a new flag bit
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 -- that extends the existing
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR'
+-- 'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatFeatureFlagBits2KHR'
 -- bits. This flag /can/ be set for renderable color formats in the
 -- 'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatProperties3KHR'::@linearTilingFeatures@
 -- format properties structure member. Formats with the
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 -- flag /may/ be used as color attachments as long as all the color
 -- attachments in the render pass instance have
 -- 'Vulkan.Core10.Enums.ImageTiling.IMAGE_TILING_LINEAR' tiling, and the
 -- formats their images views are created with have
 -- 'Vulkan.Extensions.VK_KHR_format_feature_flags2.FormatProperties3KHR'::@linearTilingFeatures@
 -- which include
--- 'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'.
+-- 'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'.
 -- This extension supports both dynamic rendering and traditional render
 -- passes.
 --
@@ -91,9 +91,9 @@
 -- is supported:
 --
 -- -   Extending
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FormatFeatureFlagBits2KHR':
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FormatFeatureFlagBits2':
 --
---     -   'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
+--     -   'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV'
 --
 -- == Version History
 --
@@ -108,7 +108,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_linear_color_attachment Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_linear_color_attachment Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -65,7 +65,7 @@
 -- generate these collections to be processed by fixed-function primitive
 -- assembly and rasterization logic. When task and mesh shaders are
 -- dispatched, they replace the core
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization stages>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization stages>,
 -- including vertex array attribute fetching, vertex shader processing,
 -- tessellation, and geometry shader processing.
 --
@@ -125,21 +125,21 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
 --
 -- -   (modified)@Position@
 --
@@ -175,7 +175,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
 --
 -- == Issues
 --
@@ -252,7 +252,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_mesh_shader Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -357,7 +357,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -413,7 +413,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -421,7 +421,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -622,50 +622,50 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-03417# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-scissorCount-03418# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-03419# If the bound
 --     graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-04137# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -673,11 +673,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-04138# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -685,11 +685,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-04139# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -697,11 +697,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-viewportCount-04140# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -709,11 +709,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -721,11 +721,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -733,21 +733,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-04876# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-None-04877# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -765,14 +765,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-blendEnable-04727# If rasterization is
@@ -795,7 +795,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06172# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -804,7 +804,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06173# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -813,7 +813,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06174# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -822,7 +822,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06175# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -831,7 +831,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06176# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -840,7 +840,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06177# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -849,61 +849,61 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-viewMask-06178# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06180# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06181# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06182# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06183# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -912,7 +912,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-imageView-06184# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -925,11 +925,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -941,13 +941,13 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06186# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -955,17 +955,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -973,7 +973,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06188# If the
 --     currently bound pipeline was created without a
@@ -981,11 +981,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -994,37 +994,37 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06189# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06190# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksNV-renderPass-06198# If the current render
 --     pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -1151,7 +1151,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -1207,7 +1207,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -1215,7 +1215,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-02697# For each set /n/ that
 --     is statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to
@@ -1418,50 +1418,50 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419# If the bound
 --     graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1469,11 +1469,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1481,11 +1481,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -1493,11 +1493,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04140# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -1505,11 +1505,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1517,11 +1517,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -1529,21 +1529,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04876# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-None-04877# If the bound graphics
 --     pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -1561,14 +1561,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727# If
@@ -1592,7 +1592,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06172# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1601,7 +1601,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06173# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1610,7 +1610,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06174# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1619,7 +1619,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06175# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1628,7 +1628,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06176# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -1637,7 +1637,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06177# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -1646,61 +1646,61 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-viewMask-06178# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06180# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06181# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06182# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06183# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1709,7 +1709,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -1722,11 +1722,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -1738,13 +1738,13 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1752,17 +1752,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -1770,7 +1770,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06188# If
 --     the currently bound pipeline was created without a
@@ -1778,11 +1778,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -1791,37 +1791,37 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06189# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06190# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198# If the current
 --     render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -1992,7 +1992,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -2048,7 +2048,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -2056,7 +2056,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697# For each set /n/
 --     that is statically used by the 'Vulkan.Core10.Handles.Pipeline'
@@ -2259,50 +2259,50 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@scissorCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     dynamic state enabled, but not the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ match the
 --     'Vulkan.Core10.Pipeline.PipelineViewportStateCreateInfo'::@viewportCount@
 --     of the pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419# If the
 --     bound graphics pipeline state was created with both the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_SCISSOR_WITH_COUNT'
 --     and
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic states enabled then both
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     and
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ match the @scissorCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetScissorWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetScissorWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -2310,11 +2310,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.PipelineViewportWScalingStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_W_SCALING_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -2322,11 +2322,11 @@
 --     'Vulkan.Extensions.VK_NV_clip_space_w_scaling.cmdSetViewportWScalingNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, but not the
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic state enabled, then the bound graphics pipeline /must/ have
@@ -2334,11 +2334,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.PipelineViewportShadingRateImageStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04140# If the
 --     bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     and
 --     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV'
 --     dynamic states enabled then the @viewportCount@ parameter in the
@@ -2346,11 +2346,11 @@
 --     'Vulkan.Extensions.VK_NV_shading_rate_image.cmdSetViewportShadingRatePaletteNV'
 --     /must/ be greater than or equal to the @viewportCount@ parameter in
 --     the last call to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -2358,11 +2358,11 @@
 --     'Vulkan.Extensions.VK_NV_viewport_swizzle.PipelineViewportSwizzleStateCreateInfoNV'::@viewportCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142#
 --     If the bound graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled and a
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'
 --     structure chained from @VkPipelineVieportCreateInfo@, then the bound
@@ -2370,21 +2370,21 @@
 --     'Vulkan.Extensions.VK_NV_scissor_exclusive.PipelineViewportExclusiveScissorStateCreateInfoNV'::@exclusiveScissorCount@
 --     greater or equal to the @viewportCount@ parameter in the last call
 --     to
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetRasterizerDiscardEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877# If the bound
 --     graphics pipeline state was created with the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_DEPTH_BIAS_ENABLE'
 --     dynamic state enabled then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnableEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2.cmdSetDepthBiasEnable'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command
 --
@@ -2402,14 +2402,14 @@
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#limits-primitiveFragmentShadingRateWithMultipleViewports primitiveFragmentShadingRateWithMultipleViewports>
 --     limit is not supported, the bound graphics pipeline was created with
 --     the
---     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT'
+--     'Vulkan.Core10.Enums.DynamicState.DYNAMIC_STATE_VIEWPORT_WITH_COUNT'
 --     dynamic state enabled, and any of the shader stages of the bound
 --     graphics pipeline write to the @PrimitiveShadingRateKHR@ built-in,
 --     then
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ have been called in the current command buffer prior to this
 --     drawing command, and the @viewportCount@ parameter of
---     'Vulkan.Extensions.VK_EXT_extended_dynamic_state.cmdSetViewportWithCountEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state.cmdSetViewportWithCount'
 --     /must/ be @1@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727# If
@@ -2433,7 +2433,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06172# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -2442,7 +2442,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06173# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -2451,7 +2451,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06174# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -2460,7 +2460,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06175# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -2469,7 +2469,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06176# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pDepthAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pDepthAttachment@ is
@@ -2478,7 +2478,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06177# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the @imageView@ member of @pStencilAttachment@ is not
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE', and the @layout@ member of
 --     @pStencilAttachment@ is
@@ -2487,61 +2487,61 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@viewMask@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@viewMask@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@viewMask@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179#
 --     If the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound graphics pipeline /must/ have been created with
 --     a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@colorAttachmentCount@
 --     equal to
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06180#
 --     If the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a 'Vulkan.Core10.Enums.Format.Format' equal to the
 --     corresponding element of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@pColorAttachmentFormats@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@pColorAttachmentFormats@
 --     used to create the currently bound graphics pipeline
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06181# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@depthAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@depthAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06182# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.PipelineRenderingCreateInfoKHR'::@stencilAttachmentFormat@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.PipelineRenderingCreateInfo'::@stencilAttachmentFormat@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the 'Vulkan.Core10.Enums.Format.Format' used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06183# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentShadingRateAttachmentInfoKHR'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -2550,7 +2550,7 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     and
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingFragmentDensityMapAttachmentInfoEXT'::@imageView@
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the currently
@@ -2563,11 +2563,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the corresponding element of the
@@ -2579,13 +2579,13 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -2593,17 +2593,17 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created with a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of the
 --     @depthStencilAttachmentSamples@ member of
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
@@ -2611,7 +2611,7 @@
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06188#
 --     If the currently bound pipeline was created without a
@@ -2619,11 +2619,11 @@
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR'
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering'
 --     with a
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@colorAttachmentCount@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@colorAttachmentCount@
 --     parameter greater than @0@, then each element of the
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pColorAttachments@
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pColorAttachments@
 --     array with a @imageView@ not equal to
 --     'Vulkan.Core10.APIConstants.NULL_HANDLE' /must/ have been created
 --     with a sample count equal to the value of
@@ -2632,37 +2632,37 @@
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06189# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pDepthAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pDepthAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06190# If
 --     the current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline was created without a
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoAMD'
 --     or
 --     'Vulkan.Extensions.VK_KHR_dynamic_rendering.AttachmentSampleCountInfoNV'
 --     structure, and
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --     was not 'Vulkan.Core10.APIConstants.NULL_HANDLE', the value of
 --     'Vulkan.Core10.Pipeline.PipelineMultisampleStateCreateInfo'::@rasterizationSamples@
 --     used to create the currently bound graphics pipeline /must/ be equal
 --     to the sample count used to create
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.RenderingInfoKHR'::@pStencilAttachment->pname@:imageView
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.RenderingInfo'::@pStencilAttachment->pname@:imageView
 --
 -- -   #VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198# If the
 --     current render pass instance was begun with
---     'Vulkan.Extensions.VK_KHR_dynamic_rendering.cmdBeginRenderingKHR',
+--     'Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering.cmdBeginRendering',
 --     the currently bound pipeline /must/ have been created with a
 --     'Vulkan.Core10.Pipeline.GraphicsPipelineCreateInfo'::@renderPass@
 --     equal to 'Vulkan.Core10.APIConstants.NULL_HANDLE'
@@ -2919,7 +2919,7 @@
 data PhysicalDeviceMeshShaderPropertiesNV = PhysicalDeviceMeshShaderPropertiesNV
   { -- | @maxDrawMeshTasksCount@ is the maximum number of local workgroups that
     -- /can/ be launched by a single draw mesh tasks command. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#drawing-mesh-shading>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#drawing-mesh-shading>.
     maxDrawMeshTasksCount :: Word32
   , -- | @maxTaskWorkGroupInvocations@ is the maximum total number of task shader
     -- invocations in a single local workgroup. The product of the X, Y, and Z
diff --git a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_mesh_shader.hs-boot
@@ -65,7 +65,7 @@
 -- generate these collections to be processed by fixed-function primitive
 -- assembly and rasterization logic. When task and mesh shaders are
 -- dispatched, they replace the core
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization stages>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization stages>,
 -- including vertex array attribute fetching, vertex shader processing,
 -- tessellation, and geometry shader processing.
 --
@@ -125,21 +125,21 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-taskcount TaskCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitivecount PrimitiveCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-primitiveindices PrimitiveIndicesNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-clipdistancepv ClipDistancePerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-culldistancepv CullDistancePerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layerpv LayerPerViewNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewcount MeshViewCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-meshviewindices MeshViewIndicesNV>
 --
 -- -   (modified)@Position@
 --
@@ -175,7 +175,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-MeshShadingNV MeshShadingNV>
 --
 -- == Issues
 --
@@ -252,7 +252,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_mesh_shader Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_mesh_shader Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
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
@@ -347,41 +347,41 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
 --
 -- -   (modified)@PrimitiveId@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
 --
 -- == Issues
 --
@@ -461,7 +461,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -684,7 +684,7 @@
 import Vulkan.Core10.Handles (PipelineCache)
 import Vulkan.Core10.Handles (PipelineCache(..))
 import Vulkan.Core10.Enums.PipelineCreateFlagBits (PipelineCreateFlags)
-import {-# SOURCE #-} Vulkan.Extensions.VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfoEXT)
+import {-# SOURCE #-} Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback (PipelineCreationFeedbackCreateInfo)
 import Vulkan.Core10.Handles (PipelineLayout)
 import Vulkan.Core10.Pipeline (PipelineShaderStageCreateInfo)
 import Vulkan.CStruct.Extends (PokeChain)
@@ -915,7 +915,7 @@
                                  -- structure.
                                  AccelerationStructureCreateInfoNV
                               -> -- | @pAllocator@ controls host memory allocation as described in the
-                                 -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                 -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                  -- chapter.
                                  ("allocator" ::: Maybe AllocationCallbacks)
                               -> io (AccelerationStructureNV)
@@ -1012,7 +1012,7 @@
                                -> -- | @accelerationStructure@ is the acceleration structure to destroy.
                                   AccelerationStructureNV
                                -> -- | @pAllocator@ controls host memory allocation as described in the
-                                  -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                                  -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                   -- chapter.
                                   ("allocator" ::: Maybe AllocationCallbacks)
                                -> io ()
@@ -1140,12 +1140,12 @@
 -- = Description
 --
 -- Accesses to @src@ and @dst@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
 -- or
@@ -1270,12 +1270,12 @@
 --
 -- Accesses to any of the acceleration structures listed in
 -- @pAccelerationStructures@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'.
 --
@@ -1412,12 +1412,12 @@
 -- = Description
 --
 -- Accesses to @dst@, @src@, and @scratch@ /must/ be
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-dependencies synchronized>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-dependencies synchronized>
 -- with the
 -- 'Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR'
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-pipeline-stages pipeline stage>
 -- and an
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#synchronization-access-types access type>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#synchronization-access-types access type>
 -- of
 -- 'Vulkan.Core10.Enums.AccessFlagBits.ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR'
 -- or
@@ -1491,17 +1491,17 @@
 -- -   #VUID-vkCmdBuildAccelerationStructureNV-update-03524# If @update@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were
 --     previously active /must/ not be made inactive as per
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims>
 --
 -- -   #VUID-vkCmdBuildAccelerationStructureNV-update-03525# If @update@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', then objects that were
 --     previously inactive /must/ not be made active as per
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#acceleration-structure-inactive-prims>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#acceleration-structure-inactive-prims>
 --
 -- -   #VUID-vkCmdBuildAccelerationStructureNV-update-03526# If @update@ is
 --     'Vulkan.Core10.FundamentalTypes.TRUE', the @src@ and @dst@ objects
 --     /must/ either be the same object or not have any
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#resources-memory-aliasing memory aliasing>
 --
 -- == Valid Usage (Implicit)
 --
@@ -1655,7 +1655,7 @@
 --     the image view’s
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#resources-image-view-format-features format features>
 --     /must/ contain
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysNV-None-02691# If a
 --     'Vulkan.Core10.Handles.ImageView' is accessed using atomic
@@ -1711,7 +1711,7 @@
 --     or storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysNV-OpTypeImage-06424# Any
 --     'Vulkan.Core10.Handles.ImageView' or
@@ -1719,7 +1719,7 @@
 --     storage texel buffer where the image format field of the
 --     @OpTypeImage@ is @Unknown@ /must/ have image format features that
 --     support
---     'Vulkan.Extensions.VK_KHR_acceleration_structure.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR'
+--     'Vulkan.Core13.Enums.FormatFeatureFlags2.FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT'
 --
 -- -   #VUID-vkCmdTraceRaysNV-None-02697# For each set /n/ that is
 --     statically used by the 'Vulkan.Core10.Handles.Pipeline' bound to the
@@ -1886,7 +1886,7 @@
 -- -   #VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625# This command /must/
 --     not cause a pipeline trace ray instruction to be executed from a
 --     shader invocation with a
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-recursion-depth recursion depth>
 --     greater than the value of @maxRecursionDepth@ used to create the
 --     bound ray tracing pipeline
 --
@@ -2211,7 +2211,7 @@
 --
 -- -   #VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903# If
 --     @pipelineCache@ was created with
---     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT',
+--     'Vulkan.Core10.Enums.PipelineCacheCreateFlagBits.PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT',
 --     host access to @pipelineCache@ /must/ be
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-threadingbehavior externally synchronized>
 --
@@ -2251,7 +2251,7 @@
 --
 --     -   'Vulkan.Core10.Enums.Result.SUCCESS'
 --
---     -   'Vulkan.Core10.Enums.Result.PIPELINE_COMPILE_REQUIRED_EXT'
+--     -   'Vulkan.Extensions.VK_EXT_pipeline_creation_cache_control.PIPELINE_COMPILE_REQUIRED_EXT'
 --
 -- [<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fundamentals-errorcodes Failure>]
 --
@@ -2273,7 +2273,7 @@
                                Device
                             -> -- | @pipelineCache@ is either 'Vulkan.Core10.APIConstants.NULL_HANDLE',
                                -- indicating that pipeline caching is disabled, or the handle of a valid
-                               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-cache pipeline cache>
+                               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-cache pipeline cache>
                                -- object, in which case use of that cache is enabled for the duration of
                                -- the command.
                                PipelineCache
@@ -2281,7 +2281,7 @@
                                -- 'RayTracingPipelineCreateInfoNV' structures.
                                ("createInfos" ::: Vector (SomeStruct RayTracingPipelineCreateInfoNV))
                             -> -- | @pAllocator@ controls host memory allocation as described in the
-                               -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>
+                               -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>
                                -- chapter.
                                ("allocator" ::: Maybe AllocationCallbacks)
                             -> io (Result, ("pipelines" ::: Vector Pipeline))
@@ -2606,7 +2606,7 @@
 --
 -- The parameters @basePipelineHandle@ and @basePipelineIndex@ are
 -- described in more detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipelines-pipeline-derivatives Pipeline Derivatives>.
 --
 -- == Valid Usage
 --
@@ -2661,9 +2661,9 @@
 --     If the
 --     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-pipelineCreationCacheControl pipelineCreationCacheControl>
 --     feature is not enabled, @flags@ /must/ not include
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 --     or
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT'
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoNV-stage-06232# The @stage@
 --     member of at least one element of @pStages@ /must/ be
@@ -2713,7 +2713,7 @@
 --     not include both
 --     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_DEFER_COMPILE_BIT_NV'
 --     and
---     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT'
+--     'Vulkan.Core10.Enums.PipelineCreateFlagBits.PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT'
 --     at the same time
 --
 -- == Valid Usage (Implicit)
@@ -2724,7 +2724,7 @@
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext# @pNext@ /must/
 --     be @NULL@ or a pointer to a valid instance of
---     'Vulkan.Extensions.VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfoEXT'
+--     'Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback.PipelineCreationFeedbackCreateInfo'
 --
 -- -   #VUID-VkRayTracingPipelineCreateInfoNV-sType-unique# The @sType@
 --     value of each struct in the @pNext@ chain /must/ be unique
@@ -2784,7 +2784,7 @@
     -- pipeline.
     groups :: Vector RayTracingShaderGroupCreateInfoNV
   , -- | @maxRecursionDepth@ is the
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#ray-tracing-recursion-depth maximum recursion depth>
     -- of shaders executed by this pipeline.
     maxRecursionDepth :: Word32
   , -- | @layout@ is the description of binding locations used by both the
@@ -2808,7 +2808,7 @@
   getNext RayTracingPipelineCreateInfoNV{..} = next
   extends :: forall e b proxy. Typeable e => proxy e -> (Extends RayTracingPipelineCreateInfoNV e => b) -> Maybe b
   extends _ f
-    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfoEXT = Just f
+    | Just Refl <- eqT @e @PipelineCreationFeedbackCreateInfo = Just f
     | otherwise = Nothing
 
 instance (Extendss RayTracingPipelineCreateInfoNV es, PokeChain es) => ToCStruct (RayTracingPipelineCreateInfoNV es) where
@@ -3676,7 +3676,7 @@
 --
 -- -   #VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-nullDescriptor nullDescriptor>
 --     feature is not enabled, each member of @pAccelerationStructures@
 --     /must/ not be 'Vulkan.Core10.APIConstants.NULL_HANDLE'
 --
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
@@ -347,41 +347,41 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchid LaunchIdNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-launchsize LaunchSizeNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldrayorigin WorldRayOriginNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldraydirection WorldRayDirectionNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectrayorigin ObjectRayOriginNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objectraydirection ObjectRayDirectionNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmin RayTminNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-raytmax RayTmaxNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instancecustomindex InstanceCustomIndexNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-instanceid InstanceId>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-objecttoworld ObjectToWorldNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-worldtoobject WorldToObjectNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitt HitTNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-hitkind HitKindNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-incomingrayflags IncomingRayFlagsNV>
 --
 -- -   (modified)@PrimitiveId@
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-RayTracingNV RayTracingNV>
 --
 -- == Issues
 --
@@ -461,7 +461,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs
@@ -174,7 +174,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_ray_tracing_motion_blur.hs-boot
@@ -174,7 +174,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_ray_tracing_motion_blur Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
--- a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
+++ b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs
@@ -156,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -223,7 +223,7 @@
   { -- | #features-representativeFragmentTest# @representativeFragmentTest@
     -- indicates whether the implementation supports the representative
     -- fragment test. See
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-rep-frag-test Representative Fragment Test>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-rep-frag-test Representative Fragment Test>.
     representativeFragmentTest :: Bool }
   deriving (Typeable, Eq)
 #if defined(GENERIC_INSTANCES)
diff --git a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs-boot b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_representative_fragment_test.hs-boot
@@ -156,7 +156,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_representative_fragment_test Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_sample_mask_override_coverage.hs b/src/Vulkan/Extensions/VK_NV_sample_mask_override_coverage.hs
--- a/src/Vulkan/Extensions/VK_NV_sample_mask_override_coverage.hs
+++ b/src/Vulkan/Extensions/VK_NV_sample_mask_override_coverage.hs
@@ -77,11 +77,11 @@
 --
 -- == New Variable Decoration
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask OverrideCoverageNV in SampleMask>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-samplemask OverrideCoverageNV in SampleMask>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-SampleMaskOverrideCoverageNV SampleMaskOverrideCoverageNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-SampleMaskOverrideCoverageNV SampleMaskOverrideCoverageNV>
 --
 -- == Version History
 --
@@ -96,7 +96,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_sample_mask_override_coverage Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_sample_mask_override_coverage Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
--- a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
+++ b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs
@@ -117,7 +117,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -206,7 +206,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-None-02031# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-exclusiveScissor exclusive scissor>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-exclusiveScissor exclusive scissor>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034# The
@@ -216,11 +216,11 @@
 --     inclusive
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @firstExclusiveScissor@ /must/ be @0@
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036# If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @exclusiveScissorCount@ /must/ be @1@
 --
 -- -   #VUID-vkCmdSetExclusiveScissorNV-x-02037# The @x@ and @y@ members of
@@ -316,7 +316,7 @@
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragops-exclusive-scissor Exclusive Scissor Test>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragops-exclusive-scissor Exclusive Scissor Test>
 -- for more information.
 --
 -- If the 'PhysicalDeviceExclusiveScissorFeaturesNV' structure is included
@@ -398,7 +398,7 @@
 --
 -- -   #VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @exclusiveScissorCount@ /must/ be @0@ or @1@
 --
 -- -   #VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028#
diff --git a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs-boot b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_scissor_exclusive.hs-boot
@@ -117,7 +117,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_scissor_exclusive Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs
@@ -127,7 +127,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
 --
 -- == Issues
 --
@@ -190,7 +190,7 @@
 -- and y offset values and then atomically OR the updated mask bits into
 -- the contents of the corresponding footprint texel.
 --
--- >     uint64_t returnedMask = (uint64_t(footprint.mask.x) | (uint64_t(footprint.mask.y) link:https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html# 32));
+-- >     uint64_t returnedMask = (uint64_t(footprint.mask.x) | (uint64_t(footprint.mask.y) link:https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html# 32));
 -- >     uint64_t rightMask    = ((0xFF [^] footprint.offset.x) * 0x0101010101010101UL);
 -- >     uint64_t bottomMask   = 0xFFFFFFFFFFFFFFFFUL >> (8 * footprint.offset.y);
 -- >     uint64_t bottomRight  = returnedMask & bottomMask & rightMask;
@@ -262,7 +262,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -306,7 +306,7 @@
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#textures-footprint Texel Footprint Evaluation>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#textures-footprint Texel Footprint Evaluation>
 -- for more information.
 --
 -- If the 'PhysicalDeviceShaderImageFootprintFeaturesNV' structure is
diff --git a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_shader_image_footprint.hs-boot
@@ -127,7 +127,7 @@
 --
 -- == New SPIR-V Capability
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ImageFootprintNV ImageFootprintNV>
 --
 -- == Issues
 --
@@ -190,7 +190,7 @@
 -- and y offset values and then atomically OR the updated mask bits into
 -- the contents of the corresponding footprint texel.
 --
--- >     uint64_t returnedMask = (uint64_t(footprint.mask.x) | (uint64_t(footprint.mask.y) link:https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html# 32));
+-- >     uint64_t returnedMask = (uint64_t(footprint.mask.x) | (uint64_t(footprint.mask.y) link:https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html# 32));
 -- >     uint64_t rightMask    = ((0xFF [^] footprint.offset.x) * 0x0101010101010101UL);
 -- >     uint64_t bottomMask   = 0xFFFFFFFFFFFFFFFFUL >> (8 * footprint.offset.y);
 -- >     uint64_t bottomRight  = returnedMask & bottomMask & rightMask;
@@ -262,7 +262,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_image_footprint Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs
@@ -86,17 +86,17 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
 --
 -- == Issues
 --
@@ -125,7 +125,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_shader_sm_builtins.hs-boot
@@ -86,17 +86,17 @@
 --
 -- == New or Modified Built-In Variables
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpspersmnv WarpsPerSMNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smcountnv SMCountNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-warpidnv WarpIDNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-smidnv SMIDNV>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderSMBuiltinsNV ShaderSMBuiltinsNV>
 --
 -- == Issues
 --
@@ -125,7 +125,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_sm_builtins Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs b/src/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs
--- a/src/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs
+++ b/src/Vulkan/Extensions/VK_NV_shader_subgroup_partitioned.hs
@@ -46,9 +46,9 @@
 -- == Description
 --
 -- This extension enables support for a new class of
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-group-operations group operations>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-group-operations group operations>
 -- on
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#shaders-scope-subgroup subgroups>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#shaders-scope-subgroup subgroups>
 -- via the
 -- <https://github.com/KhronosGroup/GLSL/blob/master/extensions/nv/GL_NV_shader_subgroup_partitioned.txt GL_NV_shader_subgroup_partitioned>
 -- GLSL extension and
@@ -83,7 +83,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shader_subgroup_partitioned Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shader_subgroup_partitioned Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
--- a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
+++ b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs
@@ -209,7 +209,7 @@
 --
 -- __RESOLVED__ We are specifying the pipeline stage to be between the
 -- final
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT')
 -- and before the first stage used for fragment processing
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'),
@@ -270,7 +270,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -397,7 +397,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-None-02058# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdBindShadingRateImageNV-imageView-02059# If @imageView@ is
@@ -525,7 +525,7 @@
 -- == Valid Usage
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064# The
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-shadingRateImage shading rate image>
 --     feature /must/ be enabled
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067# The
@@ -535,12 +535,12 @@
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @firstViewport@ /must/ be @0@
 --
 -- -   #VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069# If
 --     the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @viewportCount@ /must/ be @1@
 --
 -- == Valid Usage (Implicit)
@@ -795,7 +795,7 @@
 --
 -- -   #VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-multiViewport multiple viewports>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-multiViewport multiple viewports>
 --     feature is not enabled, @viewportCount@ /must/ be @0@ or @1@
 --
 -- -   #VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055#
@@ -879,7 +879,7 @@
 -- = Description
 --
 -- See
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image Shading Rate Image>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image Shading Rate Image>
 -- for more information.
 --
 -- If the 'PhysicalDeviceShadingRateImageFeaturesNV' structure is included
@@ -966,7 +966,7 @@
 -- property.
 --
 -- These properties are related to the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-shading-rate-image shading rate image>
 -- feature.
 --
 -- == Valid Usage (Implicit)
@@ -1122,9 +1122,9 @@
 --
 -- When using a custom sample ordering, element /j/ in @pSampleLocations@
 -- specifies a specific pixel location and
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
 -- that corresponds to
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage index>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask coverage index>
 -- /j/ in the multi-pixel fragment.
 --
 -- == Valid Usage
@@ -1464,11 +1464,11 @@
 -- | 'COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV' specifies that coverage
 -- samples will be ordered sequentially, sorted first by pixel coordinate
 -- (in row-major order) and then by
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>.
 pattern COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV  = CoarseSampleOrderTypeNV 2
 -- | 'COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV' specifies that coverage
 -- samples will be ordered sequentially, sorted first by
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-multisampling-coverage-mask sample index>
 -- and then by pixel coordinate (in row-major order).
 pattern COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = CoarseSampleOrderTypeNV 3
 {-# complete COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV,
diff --git a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_shading_rate_image.hs-boot
@@ -209,7 +209,7 @@
 --
 -- __RESOLVED__ We are specifying the pipeline stage to be between the
 -- final
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#pipeline-graphics-subsets-pre-rasterization pre-rasterization shader stage>
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_GEOMETRY_SHADER_BIT')
 -- and before the first stage used for fragment processing
 -- ('Vulkan.Core10.Enums.PipelineStageFlagBits.PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT'),
@@ -270,7 +270,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_shading_rate_image Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_viewport_array2.hs b/src/Vulkan/Extensions/VK_NV_viewport_array2.hs
--- a/src/Vulkan/Extensions/VK_NV_viewport_array2.hs
+++ b/src/Vulkan/Extensions/VK_NV_viewport_array2.hs
@@ -100,22 +100,22 @@
 -- == New or Modified Built-In Variables
 --
 -- -   (modified)
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layer Layer>
 --
 -- -   (modified)
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportindex ViewportIndex>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmask ViewportMaskNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-viewportmask ViewportMaskNV>
 --
 -- == New Variable Decoration
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#interfaces-builtin-variables-layer ViewportRelativeNV in Layer>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#interfaces-builtin-variables-layer ViewportRelativeNV in Layer>
 --
 -- == New SPIR-V Capabilities
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerNV ShaderViewportIndexLayerNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportIndexLayerNV ShaderViewportIndexLayerNV>
 --
--- -   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportMaskNV ShaderViewportMaskNV>
+-- -   <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#spirvenv-capabilities-table-ShaderViewportMaskNV ShaderViewportMaskNV>
 --
 -- == Version History
 --
@@ -130,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_viewport_array2 Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_viewport_array2 Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs b/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
--- a/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
+++ b/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs
@@ -259,7 +259,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -511,7 +511,7 @@
 -- = Description
 --
 -- These values are described in detail in
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-viewport-swizzle Viewport Swizzle>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-viewport-swizzle Viewport Swizzle>.
 --
 -- = See Also
 --
diff --git a/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs-boot b/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_viewport_swizzle.hs-boot
@@ -259,7 +259,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_viewport_swizzle Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs b/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs
--- a/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs
+++ b/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs
@@ -58,7 +58,7 @@
 -- == New Structures
 --
 -- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
---     'Vulkan.Extensions.VK_KHR_synchronization2.SubmitInfo2KHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2':
 --
 --     -   'Win32KeyedMutexAcquireReleaseInfoNV'
 --
@@ -226,7 +226,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs-boot b/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs-boot
--- a/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs-boot
+++ b/src/Vulkan/Extensions/VK_NV_win32_keyed_mutex.hs-boot
@@ -58,7 +58,7 @@
 -- == New Structures
 --
 -- -   Extending 'Vulkan.Core10.Queue.SubmitInfo',
---     'Vulkan.Extensions.VK_KHR_synchronization2.SubmitInfo2KHR':
+--     'Vulkan.Core13.Promoted_From_VK_KHR_synchronization2.SubmitInfo2':
 --
 --     -   'Win32KeyedMutexAcquireReleaseInfoNV'
 --
@@ -226,7 +226,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_NV_win32_keyed_mutex Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs b/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs
--- a/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -245,7 +245,7 @@
 data PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM = PhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM
   { -- | #limits-fragmentdensityoffsetgranularity#
     -- @fragmentDensityOffsetGranularity@ is the granularity for
-    -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density offsets>.
+    -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#renderpass-fragmentdensitymapoffsets fragment density offsets>.
     fragmentDensityOffsetGranularity :: Extent2D }
   deriving (Typeable)
 #if defined(GENERIC_INSTANCES)
@@ -291,7 +291,7 @@
 -- = Description
 --
 -- The array elements are given per @layer@ as defined by
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymap-fetch-density-value Fetch Density Value>,
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymap-fetch-density-value Fetch Density Value>,
 -- where index = layer. Each (x,y) offset is in framebuffer pixels and
 -- shifts the fetch of the fragment density map by that amount. Offsets can
 -- be positive or negative.
@@ -302,13 +302,13 @@
 -- chain for the last subpass of a renderpass does not include
 -- 'SubpassFragmentDensityMapOffsetEndInfoQCOM', or if
 -- @fragmentDensityOffsetCount@ is zero, then the offset (0,0) is used for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#fragmentdensitymap-fetch-density-value Fetch Density Value>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#fragmentdensitymap-fetch-density-value Fetch Density Value>.
 --
 -- == Valid Usage
 --
 -- -   #VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapOffsets-06503#
 --     If the
---     <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#features-fragmentDensityMapOffsets fragmentDensityMapOffsets>
+--     <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#features-fragmentDensityMapOffsets fragmentDensityMapOffsets>
 --     feature is not enabled or fragment density map is not enabled in the
 --     render pass, @fragmentDensityOffsetCount@ /must/ equal @0@.
 --
diff --git a/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs-boot b/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_fragment_density_map_offset.hs-boot
@@ -104,7 +104,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_fragment_density_map_offset Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_shader_resolve.hs b/src/Vulkan/Extensions/VK_QCOM_render_pass_shader_resolve.hs
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_shader_resolve.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_shader_resolve.hs
@@ -150,7 +150,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_shader_resolve Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs b/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_store_ops.hs
@@ -92,7 +92,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_store_ops Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_store_ops Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -104,9 +104,9 @@
                                                         ) where
 
 import Data.String (IsString)
-import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE_KHR))
+import Vulkan.Core10.Enums.AttachmentStoreOp (AttachmentStoreOp(ATTACHMENT_STORE_OP_NONE))
 -- No documentation found for TopLevel "VK_ATTACHMENT_STORE_OP_NONE_QCOM"
-pattern ATTACHMENT_STORE_OP_NONE_QCOM = ATTACHMENT_STORE_OP_NONE_KHR
+pattern ATTACHMENT_STORE_OP_NONE_QCOM = ATTACHMENT_STORE_OP_NONE
 
 
 type QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION = 2
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs
@@ -55,7 +55,7 @@
 --
 -- This extension provides a mechanism for applications to enable driver
 -- support for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
 --
 -- Mobile devices can be rotated and mobile applications need to render
 -- properly when a device is held in a landscape or portrait orientation.
@@ -225,7 +225,7 @@
 -- coordinate system.
 --
 -- The
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
 -- /may/ be different per transform. Supported rates queried from
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.getPhysicalDeviceFragmentShadingRatesKHR'
 -- are in the native (rotated) coordinate system. This means that the
@@ -248,7 +248,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_render_pass_transform.hs-boot
@@ -55,7 +55,7 @@
 --
 -- This extension provides a mechanism for applications to enable driver
 -- support for
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#vertexpostproc-renderpass-transform render pass transform>.
 --
 -- Mobile devices can be rotated and mobile applications need to render
 -- properly when a device is held in a landscape or portrait orientation.
@@ -225,7 +225,7 @@
 -- coordinate system.
 --
 -- The
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#primsrast-fragment-shading-rate set of supported shading rates>
 -- /may/ be different per transform. Supported rates queried from
 -- 'Vulkan.Extensions.VK_KHR_fragment_shading_rate.getPhysicalDeviceFragmentShadingRatesKHR'
 -- are in the native (rotated) coordinate system. This means that the
@@ -248,7 +248,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_render_pass_transform Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs
--- a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs
+++ b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs
@@ -115,7 +115,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot
--- a/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot
+++ b/src/Vulkan/Extensions/VK_QCOM_rotated_copy_commands.hs-boot
@@ -115,7 +115,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QCOM_rotated_copy_commands Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_QNX_screen_surface.hs b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs
--- a/src/Vulkan/Extensions/VK_QNX_screen_surface.hs
+++ b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -226,7 +226,7 @@
                           ScreenSurfaceCreateInfoQNX
                        -> -- | @pAllocator@ is the allocator used for host memory allocated for the
                           -- surface object when there is no more specific allocator available (see
-                          -- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
+                          -- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#memory-allocation Memory Allocation>).
                           ("allocator" ::: Maybe AllocationCallbacks)
                        -> io (SurfaceKHR)
 createScreenSurfaceQNX instance' createInfo allocator = liftIO . evalContT $ do
diff --git a/src/Vulkan/Extensions/VK_QNX_screen_surface.hs-boot b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs-boot
--- a/src/Vulkan/Extensions/VK_QNX_screen_surface.hs-boot
+++ b/src/Vulkan/Extensions/VK_QNX_screen_surface.hs-boot
@@ -87,7 +87,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_QNX_screen_surface Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs
--- a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs
+++ b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs
@@ -130,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_mutable_descriptor_type Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_mutable_descriptor_type Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
@@ -335,7 +335,7 @@
 --
 -- -   #VUID-VkMutableDescriptorTypeListVALVE-pDescriptorTypes-04603#
 --     @pDescriptorTypes@ /must/ not contain
---     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT'
+--     'Vulkan.Core10.Enums.DescriptorType.DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK'
 --
 -- == Valid Usage (Implicit)
 --
diff --git a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot
--- a/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot
+++ b/src/Vulkan/Extensions/VK_VALVE_mutable_descriptor_type.hs-boot
@@ -130,7 +130,7 @@
 -- == Document Notes
 --
 -- For more information, see the
--- <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VK_VALVE_mutable_descriptor_type Vulkan Specification>
+-- <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VK_VALVE_mutable_descriptor_type Vulkan Specification>
 --
 -- This page is a generated document. Fixes and changes should be made to
 -- the generator scripts, not directly.
diff --git a/src/Vulkan/SPIRVRequirements.hs b/src/Vulkan/SPIRVRequirements.hs
--- a/src/Vulkan/SPIRVRequirements.hs
+++ b/src/Vulkan/SPIRVRequirements.hs
@@ -29,11 +29,13 @@
 import Vulkan.Extensions.VK_KHR_ray_tracing_pipeline (PhysicalDeviceRayTracingPipelineFeaturesKHR(..))
 import Vulkan.Extensions.VK_EXT_shader_atomic_float2 (PhysicalDeviceShaderAtomicFloat2FeaturesEXT(..))
 import Vulkan.Extensions.VK_EXT_shader_atomic_float (PhysicalDeviceShaderAtomicFloatFeaturesEXT(..))
-import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(..))
+import Vulkan.Extensions.VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT)
+import Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation (PhysicalDeviceShaderDemoteToHelperInvocationFeatures(..))
 import Vulkan.Core11.Promoted_From_VK_KHR_shader_draw_parameters (PhysicalDeviceShaderDrawParametersFeatures(..))
 import Vulkan.Extensions.VK_EXT_shader_image_atomic_int64 (PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(..))
 import Vulkan.Extensions.VK_NV_shader_image_footprint (PhysicalDeviceShaderImageFootprintFeaturesNV(..))
-import Vulkan.Extensions.VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeaturesKHR(..))
+import Vulkan.Extensions.VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeaturesKHR)
+import Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product (PhysicalDeviceShaderIntegerDotProductFeatures(..))
 import Vulkan.Extensions.VK_INTEL_shader_integer_functions2 (PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(..))
 import Vulkan.Extensions.VK_NV_shader_sm_builtins (PhysicalDeviceShaderSMBuiltinsFeaturesNV(..))
 import Vulkan.Extensions.VK_NV_shading_rate_image (PhysicalDeviceShadingRateImageFeaturesNV(..))
@@ -45,6 +47,7 @@
 import Vulkan.Core12 (PhysicalDeviceVulkan12Features(..))
 import Vulkan.Core12 (PhysicalDeviceVulkan12Properties)
 import Vulkan.Core12 (PhysicalDeviceVulkan12Properties(..))
+import Vulkan.Core13 (PhysicalDeviceVulkan13Features(..))
 import Vulkan.Extensions.VK_KHR_workgroup_memory_explicit_layout (PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(..))
 import Vulkan.Extensions.VK_AMD_gcn_shader (pattern AMD_GCN_SHADER_EXTENSION_NAME)
 import Vulkan.Extensions.VK_AMD_gpu_shader_half_float (pattern AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME)
@@ -532,17 +535,8 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
-  "SPV_EXT_demote_to_helper_invocation" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
-    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    ]
+  "SPV_EXT_demote_to_helper_invocation" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
   "SPV_KHR_fragment_shading_rate" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -566,13 +560,8 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
-  "SPV_KHR_non_semantic_info" -> (,)
-    []
-    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    ]
+  "SPV_KHR_non_semantic_info" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
   "SPV_EXT_shader_image_int64" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -584,17 +573,8 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
-  "SPV_KHR_terminate_invocation" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
-    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    ]
+  "SPV_KHR_terminate_invocation" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
   "SPV_KHR_multiview" ->
     (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 1 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 1 0]
   "SPV_KHR_workgroup_memory_explicit_layout" -> (,)
@@ -619,13 +599,8 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
-  "SPV_KHR_subgroup_uniform_control_flow" -> (,)
-    []
-    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    ]
+  "SPV_KHR_subgroup_uniform_control_flow" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
   "SPV_EXT_shader_atomic_float_min_max" -> (,)
     [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
@@ -656,17 +631,8 @@
                              , deviceExtensionMinVersion = 0
                              }
     ]
-  "SPV_KHR_integer_dot_product" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
-                               , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
-                               , instanceExtensionMinVersion = 0
-                               }
-    ]
-    [ RequireDeviceExtension { deviceExtensionLayerName  = Nothing
-                             , deviceExtensionName       = KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME
-                             , deviceExtensionMinVersion = 0
-                             }
-    ]
+  "SPV_KHR_integer_dot_product" ->
+    (,) [RequireInstanceVersion $ MAKE_API_VERSION 1 3 0] [RequireDeviceVersion $ MAKE_API_VERSION 1 3 0]
   _ -> ([], [])
 
 spirvCapabilityRequirements :: ByteString -> ([InstanceRequirement], [DeviceRequirement])
@@ -2345,18 +2311,20 @@
                              }
     ]
   "DemoteToHelperInvocationEXT" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 3 0
+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
                                }
     ]
     [ RequireDeviceFeature
       { featureName   = "shaderDemoteToHelperInvocation"
-      , checkFeature  = \PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT { shaderDemoteToHelperInvocation } ->
+      , checkFeature  = \PhysicalDeviceVulkan13Features { shaderDemoteToHelperInvocation } ->
                           shaderDemoteToHelperInvocation
-      , enableFeature = \_ ->
-        PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT { shaderDemoteToHelperInvocation = True }
+      , enableFeature = \PhysicalDeviceVulkan13Features {..} ->
+                          PhysicalDeviceVulkan13Features { shaderDemoteToHelperInvocation = True, .. }
       }
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 3 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
@@ -2457,68 +2425,76 @@
                              }
     ]
   "DotProductInputAllKHR" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 3 0
+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
                                }
     ]
     [ RequireDeviceFeature
       { featureName   = "shaderIntegerDotProduct"
-      , checkFeature  = \PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct } ->
-                          shaderIntegerDotProduct
-      , enableFeature = \_ -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct = True }
+      , checkFeature  = \PhysicalDeviceVulkan13Features { shaderIntegerDotProduct } -> shaderIntegerDotProduct
+      , enableFeature = \PhysicalDeviceVulkan13Features {..} ->
+                          PhysicalDeviceVulkan13Features { shaderIntegerDotProduct = True, .. }
       }
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 3 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "DotProductInput4x8BitKHR" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 3 0
+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
                                }
     ]
     [ RequireDeviceFeature
       { featureName   = "shaderIntegerDotProduct"
-      , checkFeature  = \PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct } ->
-                          shaderIntegerDotProduct
-      , enableFeature = \_ -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct = True }
+      , checkFeature  = \PhysicalDeviceVulkan13Features { shaderIntegerDotProduct } -> shaderIntegerDotProduct
+      , enableFeature = \PhysicalDeviceVulkan13Features {..} ->
+                          PhysicalDeviceVulkan13Features { shaderIntegerDotProduct = True, .. }
       }
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 3 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "DotProductInput4x8BitPackedKHR" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 3 0
+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
                                }
     ]
     [ RequireDeviceFeature
       { featureName   = "shaderIntegerDotProduct"
-      , checkFeature  = \PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct } ->
-                          shaderIntegerDotProduct
-      , enableFeature = \_ -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct = True }
+      , checkFeature  = \PhysicalDeviceVulkan13Features { shaderIntegerDotProduct } -> shaderIntegerDotProduct
+      , enableFeature = \PhysicalDeviceVulkan13Features {..} ->
+                          PhysicalDeviceVulkan13Features { shaderIntegerDotProduct = True, .. }
       }
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 3 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
                              }
     ]
   "DotProductKHR" -> (,)
-    [ RequireInstanceExtension { instanceExtensionLayerName  = Nothing
+    [ RequireInstanceVersion $ MAKE_API_VERSION 1 3 0
+    , RequireInstanceExtension { instanceExtensionLayerName  = Nothing
                                , instanceExtensionName       = KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
                                , instanceExtensionMinVersion = 0
                                }
     ]
     [ RequireDeviceFeature
       { featureName   = "shaderIntegerDotProduct"
-      , checkFeature  = \PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct } ->
-                          shaderIntegerDotProduct
-      , enableFeature = \_ -> PhysicalDeviceShaderIntegerDotProductFeaturesKHR { shaderIntegerDotProduct = True }
+      , checkFeature  = \PhysicalDeviceVulkan13Features { shaderIntegerDotProduct } -> shaderIntegerDotProduct
+      , enableFeature = \PhysicalDeviceVulkan13Features {..} ->
+                          PhysicalDeviceVulkan13Features { shaderIntegerDotProduct = True, .. }
       }
+    , RequireDeviceVersion $ MAKE_API_VERSION 1 3 0
     , RequireDeviceExtension { deviceExtensionLayerName  = Nothing
                              , deviceExtensionName       = KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME
                              , deviceExtensionMinVersion = 0
diff --git a/src/Vulkan/Version.hs b/src/Vulkan/Version.hs
--- a/src/Vulkan/Version.hs
+++ b/src/Vulkan/Version.hs
@@ -19,11 +19,11 @@
 import Data.Word (Word32)
 
 pattern HEADER_VERSION :: Word32
-pattern HEADER_VERSION = 203
+pattern HEADER_VERSION = 204
 
 
 pattern HEADER_VERSION_COMPLETE :: Word32
-pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 2 203
+pattern HEADER_VERSION_COMPLETE = MAKE_API_VERSION 1 3 204
 
 
 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.15
+version:        3.16
 synopsis:       Bindings to the Vulkan graphics API.
 description:    Please see [the readme](https://github.com/expipiplus1/vulkan/#readme)
 category:       Graphics
@@ -247,6 +247,37 @@
       Vulkan.Core12.Promoted_From_VK_KHR_timeline_semaphore
       Vulkan.Core12.Promoted_From_VK_KHR_uniform_buffer_standard_layout
       Vulkan.Core12.Promoted_From_VK_KHR_vulkan_memory_model
+      Vulkan.Core13
+      Vulkan.Core13.Enums
+      Vulkan.Core13.Enums.AccessFlags2
+      Vulkan.Core13.Enums.FormatFeatureFlags2
+      Vulkan.Core13.Enums.PipelineCreationFeedbackFlagBits
+      Vulkan.Core13.Enums.PipelineStageFlags2
+      Vulkan.Core13.Enums.PrivateDataSlotCreateFlagBits
+      Vulkan.Core13.Enums.RenderingFlagBits
+      Vulkan.Core13.Enums.SubmitFlagBits
+      Vulkan.Core13.Enums.ToolPurposeFlagBits
+      Vulkan.Core13.Handles
+      Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state
+      Vulkan.Core13.Promoted_From_VK_EXT_extended_dynamic_state2
+      Vulkan.Core13.Promoted_From_VK_EXT_image_robustness
+      Vulkan.Core13.Promoted_From_VK_EXT_inline_uniform_block
+      Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_cache_control
+      Vulkan.Core13.Promoted_From_VK_EXT_pipeline_creation_feedback
+      Vulkan.Core13.Promoted_From_VK_EXT_private_data
+      Vulkan.Core13.Promoted_From_VK_EXT_shader_demote_to_helper_invocation
+      Vulkan.Core13.Promoted_From_VK_EXT_subgroup_size_control
+      Vulkan.Core13.Promoted_From_VK_EXT_texel_buffer_alignment
+      Vulkan.Core13.Promoted_From_VK_EXT_texture_compression_astc_hdr
+      Vulkan.Core13.Promoted_From_VK_EXT_tooling_info
+      Vulkan.Core13.Promoted_From_VK_KHR_copy_commands2
+      Vulkan.Core13.Promoted_From_VK_KHR_dynamic_rendering
+      Vulkan.Core13.Promoted_From_VK_KHR_format_feature_flags2
+      Vulkan.Core13.Promoted_From_VK_KHR_maintenance4
+      Vulkan.Core13.Promoted_From_VK_KHR_shader_integer_dot_product
+      Vulkan.Core13.Promoted_From_VK_KHR_shader_terminate_invocation
+      Vulkan.Core13.Promoted_From_VK_KHR_synchronization2
+      Vulkan.Core13.Promoted_From_VK_KHR_zero_initialize_workgroup_memory
       Vulkan.CStruct.Extends
       Vulkan.CStruct.Utils
       Vulkan.Dynamic
@@ -418,6 +449,7 @@
       Vulkan.Extensions.VK_KHR_get_memory_requirements2
       Vulkan.Extensions.VK_KHR_get_physical_device_properties2
       Vulkan.Extensions.VK_KHR_get_surface_capabilities2
+      Vulkan.Extensions.VK_KHR_global_priority
       Vulkan.Extensions.VK_KHR_image_format_list
       Vulkan.Extensions.VK_KHR_imageless_framebuffer
       Vulkan.Extensions.VK_KHR_incremental_present
